AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente gesucht: TParameterListBox

Ein Thema von Codewalker · begonnen am 26. Jun 2007 · letzter Beitrag vom 29. Jun 2007
Antwort Antwort
Benutzerbild von Codewalker
Codewalker

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

Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 07:46
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?
Miniaturansicht angehängter Grafiken
paramlst_480.gif  
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#2

Re: Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 08:40
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...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

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

Re: Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 08:42
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
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 08:47
Zitat von Codewalker:
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
Überredet
Du kannst von Glück sagen dass ich noch genau weiss in welchem Projekt^^

*Quelltext kopier*

Komponente: TJvRichEdit
Event: OnURLClick
Delphi-Quellcode:
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;
Den Maillink habe ich einfach als String "mailto:abc@def.gh" reingeschrieben...
musst mal gucken was man da basteln kann.

es kann aber auch sein dass der wirklich nur links (mit .de und so) erkennt...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

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

Re: Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 08:54
Das war eine verdammt fixe Antwort

Ich werd mal sehen, ob man das Richedit auch überreden kann, auch benutzerdefinierte Links anzunehmen
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

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

Re: Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 13:09
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
Angehängte Dateien
Dateityp: zip source_636.zip (2,7 KB, 4x aufgerufen)
Dateityp: pas jvrichedit_536.pas (223,7 KB, 5x aufgerufen)
Dateityp: exe caretaker_169.exe (521,5 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: Komponente gesucht: TParameterListBox

  Alt 26. Jun 2007, 16:51
hmm, nicht schlecht, könnte man ja u.U. nochmal gebrauchen...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
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, 16: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz