Einzelnen Beitrag anzeigen

Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Komponente gesucht: TParameterListBox

  Alt 29. Jun 2007, 17:05
So, da mir diese "Frickellösung" nicht wirklich gefallen hat und ich ja auch damit arbeiten muss und dem Cliché des "faulen Programmierer" nachkommen muss, habe ich das ganze mal in eine einfach zu nutzende Komponente gegossen.

Es verhält sich vollständig wie das bekannte JvRichEdit, unterstützt aber das einfügen von Text mit Links. Dazu müssen die Eigenschaften "OpenTag" und "CloseTag" gesetzt werden, z.B. auf "[" und "]". Alles zwischen den Klammern wird als Link erkannt.
Text wird dem RichEdit über die neue Funktion
procedure InsertText(FilterText: string; Bookmarks: array of String; BookmarkIDs: array of Integer); zugewiesen. Filtertext ist der Text mit den kodierten Links, Bookmarks ein Array von Werten, die als Linktexte eingesetzt werden sollen und BookmarkIDs sind Zahlenwerte, die beim Klick auf den jeweiligen Link zurückgegeben werden. DAmit kann man sehr leicht ermitteln, welcher Link angeklickt worden ist und ebenso einfach auf mehrere Links identisch reagieren.


Ein einfaches Beispiel
Delphi-Quellcode:
const
 RULE_Switch_if_temp_Below = 'Schalte [Schalter] [Status], wenn Temperatur [Grenzwert] [Wechsel]';
 // Das ist der Text als Beispiel mit eckigen Klammern
Der Text wird mit
 ParamList.InsertText(RULE_Switch_if_temp_Below,['Schalter2','an','25°','überschreitet'],[10,20,50,80]); zugewiesen.
Bei einem Klick auf den Link "25°" wird dann eine 50 zurückgegeben. Dies kann über das neue Ereignis "OnLinkClicked" ausgewertet werden und es kann der Linktext geändert werden.

Delphi-Quellcode:
procedure TForm1.RuleEditLinkClicked(BookmarkID, Position: Integer;
  var Text: string);
begin
 ShowMessage(IntToStr(BookmarkID));
 InputQuery('Text ändern','Text:',Text);
end;
Hier wird zuerst die Zahl (im Beispiel: 50) angezeigt und danach kann der Text nach belieben geändert werden. Der Einfachheit halber, habe ich ein Abbrechen der InputBox im Beispiel ignoriert.

Hoffe es nützt jemanden - bin für Fragen, Anregungen und Kritik immer zu haben.

Grüße aus dem Westen,

Thomas

EDIT: Für alle, die lieber interaktiv sind, habe ich eine kompilierte Demo angehangen
Angehängte Dateien
Dateityp: pas jvrichedit_modded_211.pas (223,7 KB, 2x aufgerufen)
Dateityp: pas paramlist_124.pas (2,7 KB, 2x aufgerufen)
Dateityp: exe demo_199.exe (541,0 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat