![]() |
Komponente gesucht: TParameterListBox
Liste der Anhänge anzeigen (Anzahl: 1)
Moin zusammen.
Ich suche eine (freie) Komponente ähnlich des Regeleditors aus Outlook bzw. des Starcraft-Editors. Das ganze ist ein Memo, das verschiedene "Links" anzeigt, über die andere Fenster aufgerufen werden können. Ich habe das ganze von TMS gefunden, aber da kostet der Spaß 40€. Kennt vielleicht jemand eine Quelle wo man das umsonst bekommt? |
Re: Komponente gesucht: TParameterListBox
das müsste die JvMemo können...
die hat glaub ich ein OnLinkClick oder sowas. Ich habe es jedenfalls schonmal benutzt. Falls ich falsch liege gucke ich heute nachmittag nochmal nach... |
Re: Komponente gesucht: TParameterListBox
klingt schon mal gut. Werde ich mir mal anschauen. Wenn du sagst, du hast es schon mal benutzt, kannst du mir doch auch bestimmt sagen, wie ich einen solchen Link anlegen kann
|
Re: Komponente gesucht: TParameterListBox
Zitat:
Du kannst von Glück sagen dass ich noch genau weiss in welchem Projekt^^ *Quelltext kopier* Komponente: TJvRichEdit Event: OnURLClick
Delphi-Quellcode:
Den Maillink habe ich einfach als String "mailto:abc@def.gh" reingeschrieben...
procedure TForm_Main.Rch_InfoURLClick(Sender: TObject; const URLText: string; Button: TMouseButton);
//EMail senden begin case Button of mbLeft:SendMail('Feedback zu "'+cAppTitle+'"','','*email*','*email*',True); end; end; musst mal gucken was man da basteln kann. es kann aber auch sein dass der wirklich nur links (mit .de und so) erkennt... |
Re: Komponente gesucht: TParameterListBox
Das war eine verdammt fixe Antwort :mrgreen:
Ich werd mal sehen, ob man das Richedit auch überreden kann, auch benutzerdefinierte Links anzunehmen |
Re: Komponente gesucht: TParameterListBox
Liste der Anhänge anzeigen (Anzahl: 3)
So, Lösung vorhanden dank guter Starthilfe.
Das JvRichEdit kann das tatsächlich, erkennt aber nur bestimmte Protokolle. Benutzerdefinierte Links kann man über das Boolean-Property "Link" von SeAttributes erstellen. Mein Problem war aber zusätzlich noch, dass OnURLClick nur den Text zurückliefert, aber nicht, an welcher Stelle oder (wenn das selbe Wort als Link mehrmals vorkommt) welches Wort angeklickt wurde. Dazu habe ich die JvRichEdit.pas editiert und dem Event zusätzlich die Positionen des Wortes mitgegeben. Damit ist es nun ein Kinderspiel Links zu setzen und per Klick genau anzusprechen. @glkgereon: Danke für die Hilfe, hat mir mehr als geholfen. So wusste ich auch, wo man suchen muss |
Re: Komponente gesucht: TParameterListBox
hmm, nicht schlecht, könnte man ja u.U. nochmal gebrauchen... :thumb:
|
Re: Komponente gesucht: TParameterListBox
Liste der Anhänge anzeigen (Anzahl: 3)
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
Delphi-Quellcode:
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.
procedure InsertText(FilterText: string; Bookmarks: array of String; BookmarkIDs: array of Integer);
Ein einfaches Beispiel
Delphi-Quellcode:
Der Text wird mit
const
RULE_Switch_if_temp_Below = 'Schalte [Schalter] [Status], wenn Temperatur [Grenzwert] [Wechsel]'; // Das ist der Text als Beispiel mit eckigen Klammern
Delphi-Quellcode:
zugewiesen.
ParamList.InsertText(RULE_Switch_if_temp_Below,['Schalter2','an','25°','überschreitet'],[10,20,50,80]);
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:
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.
procedure TForm1.RuleEditLinkClicked(BookmarkID, Position: Integer;
var Text: string); begin ShowMessage(IntToStr(BookmarkID)); InputQuery('Text ändern','Text:',Text); end; 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz