Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TJvRichEdit, Grafiken einfügen und diese wiedererkennen


galagher - Fr 03.11.17 18:35
Titel: TJvRichEdit, Grafiken einfügen und diese wiedererkennen
Hallo zusammen!

Man kann ja in ein TJvRichEdit auch Grafiken einfügen.
Kennt jemand eine Möglichkeit, diese mit einer Art Kennung oder so etwas Ähnlichem zu versehen, damit man sie beim Anklicken später identifizeren kann? Dass also jeder Grafik ein eindeutiges Kennzeichen, meinetwegen eine Zahl, zugeordnet wird?


drstar - Fr 03.11.17 21:53

Hi,

da ich gerade das Arbeiten mit Objektlisten kennengelernt habe und somit das Schätzen von TObject, würde ich in Erwägung ziehen, aus TJvRichEdit als Basisklasse eine eigene Klasse abzuleiten, dabei aber dann die Möglichkeit einzubauen, parallel zur Grafik ein Objekt (TObject als Integer) mit zu übergeben - über das Objekt wäre dann die Grafik identifizierbar.


galagher - Fr 03.11.17 22:20

user profile icondrstar hat folgendes geschrieben Zum zitierten Posting springen:
dabei aber dann die Möglichkeit einzubauen, parallel zur Grafik ein Objekt (TObject als Integer) mit zu übergeben
Ich hatte gehofft, dass das einfacher geht...


frank ranis - Mo 06.11.17 08:22

Hallo galagher,

Google mal nach 'Steganographie' , da kann man Text in Bildern verstecken , ohne das man optisch was erkennen kann.

Damit könntest Du dann in deinen Bildern eine Nummer , oder Begleittext einbauen und damit die Erkennung machen.

Es gibt auch Beispile in Delphi , einfach mal suchen.

Gruß

Frank


galagher - Mo 06.11.17 20:25

user profile iconfrank ranis hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt auch Beispile in Delphi , einfach mal suchen.
Habe etwas gefunden: http://www.swissdelphicenter.ch/en/showcode.php?id=1139
Habe es ein wenig umgebaut - funktioniert!

Nur: Wie erkenne ich, dass ich eine Grafik angeklickt habe? TJvRichEdit(Sender).SelectionType = [stOBJECT] kann alles mögliche sein!


galagher - Mo 06.11.17 23:09

Das geht viel einfacher mit SelStart: Man definiert einen Integer, und wenn SelStart diesem Integer entspricht, dann tu was. So lassen sich beliebig viele Grafiken ermitteln, ohne dass das TJvRichEdit davon etwas wissen muss!


Ralf Kaiser - Di 07.11.17 07:46

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Das geht viel einfacher mit SelStart: Man definiert einen Integer, und wenn SelStart diesem Integer entspricht, dann tu was. So lassen sich beliebig viele Grafiken ermitteln, ohne dass das TJvRichEdit davon etwas wissen muss!


Und was ist wenn jemand vor der Grafik Text einfügt? - Dann stimmt SelStart nicht mehr mit dem vorigen Wert überein...


galagher - Di 07.11.17 19:47

user profile iconRalf Kaiser hat folgendes geschrieben Zum zitierten Posting springen:
Und was ist wenn jemand vor der Grafik Text einfügt? - Dann stimmt SelStart nicht mehr mit dem vorigen Wert überein...
Ja, das ist der Schwachpunkt an diesem Plan... Müsste man darauf reagieren.

Hat jemand eine Idee, ob man etwas mit InsertGraphic machen kann? Man müsste dort die Kennung irgendwie unterbringen und dann wieder auslesen können.


Delete - Mi 08.11.17 03:20

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Mi 08.11.17 10:58

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Die Eigenschaft .SelectionType [http://wiki.delphi-jedi.org/wiki/JVCL_Help:TRichSelection] reagiert wohl auf Objekte, die innerhalb des TJvRichEdit selektiert werden, mehr auch nicht.
Es wird hierbei zwischen einem/mehreren COM-Objekt/en, sowie Text unterschieden.
Da der Quellcode ja vorliegt, kann man SelectionType besser differenzieren, und wie?

Leider kam ich mit Object / AddObject usw. nicht weiter...


Delete - Mi 08.11.17 11:11

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Mi 08.11.17 11:39

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:

Wenn du beabsichtigst immer nur ein selektiertes Objekt abzufragen, dann:


Delphi-Quelltext
1:
2:
if TJvRichEdit(Sender).SelectionType = [stObject] then
  ShowMessage('Ein Objekt ist ausgewählt');
Ich benötige etwas in der Art:


Delphi-Quelltext
1:
2:
3:
if TJvRichEdit(Sender).SelectionType = [stObject] then
  if TJvRichEdit(Sender).ObjectIndex = 1 //ObjectIndex gibt's aber leider nicht!
    ShowMessage('Ein Objekt mit dem Index '+IntToStr(TJvRichEdit(Sender).ObjectIndex)+' ist ausgewählt');


Ich beabsichtige also, nicht einfach nur ein selektiertes Objekt abzufragen, sondern dieses soll eine Art ID besitzen, eine eindeutige, ihm zugeordnete Kennung, mit der man es eindeutig identifizieren kann!
Wie mache ich das? :nixweiss:


Delete - Mi 08.11.17 12:14

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Mi 08.11.17 14:22

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Das wären die Anhaltspunkte. Wie man dahin kommt, keine Ahnung. :gruebel:
Ja, da war ich gestern schon erfolglos...

Wie kann man denn in die .InserGraphic-Methode etwas "eigenes" einbauen und vor allem wieder auslesen?