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
|