ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 Add text or color to thumbs using TIEDBMultiBitmap and value from the database

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

View 
UserName:
Password:
Format  Bold Italicized Underline  Align Left Centered Align Right  Horizontal Rule  Insert Hyperlink   Browse for an image to attach to your post Browse for a zip to attach to your post Insert Code  Insert Quote Insert List
   
Message 

 

Emoji
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Black Eye [B)]
Frown [:(] Shocked [:0] Angry [:(!] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
jalbrecht Posted - Feb 14 2023 : 13:30:23
Hello,

I have a TImageEnmView Attached to a dataset.

I would like to show some differences on thumbs from values contained into the same dataset.

The dataset shows many pages gathered for different documents, and I would like to show where certain words contained into a text blob field are found attached to the image of the page.

Like
Onimageload do
If Pos(Searchtext , blobtextfield) > 0 then
Imagetoptexte := 'Found'

My problem is that the TImageEnmView on load event does not appear to synchronise with TIEDBMultiBitmap and it's dataset.


Best regards.
13   L A T E S T    R E P L I E S    (Newest First)
xequte Posted - Mar 06 2023 : 15:46:58
Good to hear you got it working

Nigel
Xequte Software
www.imageen.com
jalbrecht Posted - Mar 04 2023 : 12:20:10
Nigel,

You're the man !! it worked perfectly ...
As long as I lookup in the correct field .......

Thanks you very much.
xequte Posted - Mar 02 2023 : 13:52:13
Hmm. Maybe accessing the table is triggering a change event??

Try performing the lookup in a second instance of the dataset (fi_Img)


Nigel
Xequte Software
www.imageen.com
jalbrecht Posted - Mar 01 2023 : 04:04:39
Thank you Nigel but...

I did this :

procedure Tmain1.ImageEnView1GetText(Sender: TObject; Index: Integer;Position: TIEMTextPos; var Text: WideString);
var
  fn, s: string;
  v: variant;
begin
  if (JvXPCheckbox1.checked) and (JvEdit4.Text <> '' ) and ( Position = iemtpBottom ) then
  begin
     fn := ImageEnView1.ImageFilename[Index];
     v:=udm1.fi_Img.Lookup('CHEMIN_IMG' , fn , 'CHEMIN_IMG;TEXT;TITRE;TITRE2;AD;WORK_ORDER;TASK_REF;SB');
     s := '';
     if not VarIsNull( v ) then
        s := v;
     if Pos( Uppercase(JvEdit4.Text) , Uppercase( s )) > 0 then
       Text := 'Found';

  end;
end;

And my window is now endlessly blinking ...

Best regards.
xequte Posted - Feb 28 2023 : 19:39:26
Hi

Here is an example using the filename field to look up a database record:

procedure TMainForm.ImageEnMView1GetText(Sender: TObject; Index: Integer;
    Position: TIEMTextPos; var Text: WideString);
const
  Seek_Field = 'Description';
var
  fn, s: string;
  v: variant;
begin
  if chkCustomText.Checked and ( Position = iemtpBottom ) then
  begin
    // Get filename so we can locate record
    fn := ImageEnMView1.ImageFilename[Index];
    v := qryImages.Lookup( 'Filename', fn, Seek_Field );

    // Get field value (may be NULL for memo types if field not filled)
    s := '';
    if not VarIsNull( v ) then
      s := v;

    if Pos( 'SUN', Uppercase( s )) > 0 then
      Text := 'SUNNY Picture'
    else
      Text := 'No sun :-('
  end;
end;


attach/xequte/2023228193914_IEDemoDB_Lookup.zip
640.98 KB

Nigel
Xequte Software
www.imageen.com
jalbrecht Posted - Feb 28 2023 : 08:23:59
Hi Nigel,

It is a Firebird database.
Please find attached the XLS result of the loaded dataset that gives me the links to the loaded images and records.
My idea in the given case, is to show a mark on every images that has the word "PALE" in the given indexes to the images.
i.e. in the other columns of the dataset.

This means for the lines 5,8,13,25,28,29,33,50 and 59.

Best regards

attach/jalbrecht/202322882446_data example.zip
26.2 KB
xequte Posted - Feb 24 2023 : 19:23:28
Hmm, what sort of database is this? Are you able to send me a small demo that shows the issue without me needing to install any dependent libraries?

Nigel
Xequte Software
www.imageen.com
jalbrecht Posted - Feb 24 2023 : 02:26:07
Hi,

I tried this:
id := ImageEnView1.ImageID[Index];
if Position = iemtpBottom then
Text := inttostr(id);

And the text is always -1






xequte Posted - Feb 23 2023 : 20:50:00
Hi

Yes, OnGetText will be called any time the text field needs to be filled:

e.g.

procedure TMainForm.ImageEnMView1GetText(Sender: TObject; Index: Integer;
    Position: TIEMTextPos; var Text: WideString);
begin
  if Position = iemtpBottom then
    Text := Index.ToString;
end;





You can use the Index, to get the Database ID:

https://www.imageen.com/help/TImageEnMView.ImageID.html

Use the ID to perform a look up on the database record and then fill the text string.


procedure TMainForm.ImageEnMView1GetText(Sender: TObject; Index: Integer;
    Position: TIEMTextPos; var Text: WideString);
var
  id: Integer;
  blobText: string;
begin
  if Position <> iemtpTop then
    exit;

  id := ImageEnMView1.ImageID[Index];
  blobText := LookUpRecordText( id );
  If Pos( Searchtext, blobText ) > 0 then
    Text := 'Found';
end;


Nigel
Xequte Software
www.imageen.com
jalbrecht Posted - Feb 23 2023 : 02:28:39
Hi Nigel,

the IDX only changes value on click on the thumbs.
It does not change when loading all the thumbs from a dataset.

Best regards.
xequte Posted - Feb 22 2023 : 21:30:45
Hi

You should be able to use the Index parameter of the OnGetText event to look up the database values.

Nigel
Xequte Software
www.imageen.com
jalbrecht Posted - Feb 22 2023 : 04:59:33
Hi Ngel,

I have tested you proposed solution.
I can't have access to the current data behind the loaded thumb.
It is always on the first record that is providing links to the displayed images.

The cursor only move when I click on a thumb.

// In the form show.
ImageEnView1.SetModernStyling;
fDBMBitmap := TIEDBMultiBitmap.create( udm1.DS_fi_Img , '', 'CHEMIN_CPL', dmAllRecords ); //The file name is complete in field CHEMIN_CPL

fDBMBitmap.ImagePath := '';
fDBMBitmap.FollowDBCursor := True;
fDBMBitmap.AutoLoad := true;
fDBMBitmap.FilenameFieldIsUnique := True;
fDBMBitmap.mode := dmAllRecords ;
fDBMBitmap.FollowDBCursor := true;

ImageEnView1.SetExternalMBitmap( fDBMBitmap );
imageEnView1.DefaultTopText := iedtCustom;
...

procedure Tmain1.ImageEnView1GetText(Sender: TObject; Index: Integer;Position: TIEMTextPos; var Text: WideString);
begin
if Discreminant then // test if the searched text is in the record.
begin
if Position = iemtpTop then
Text := inttostr(Index) + ' [*]';
end
else
if Position = iemtpTop then
Text := inttostr(Index);
end;



Best regards.
xequte Posted - Feb 14 2023 : 20:11:45
Hi

You can't set the thumb text values for content read from a database because it is dynamically filled.

You would be better to use one of the events that is called when each thumbnail is shown, for example:

http://www.imageen.com/help/TImageEnMView.OnGetText.html
http://www.imageen.com/help/TImageEnMView.OnImageDraw2.html


Nigel
Xequte Software
www.imageen.com