![]() |
HilfeText- OnMouseEnter (Array?)
Hallo zusammen,
ein kleines Problem hindert mich momentan meine ToDo-Liste abzuarbeiten :) Kurz zur Beschreibung: * Es gibt viele TEdit- Felder fuer die Eingabe (Logisch ;)) * Geht der Nutzer nun mit der Maus ueber diese Eingabe soll ein Hilfetext erscheinen. (Das ganze soll allerdings nicht mit "Hint" geloest werden (Man muss zu lange warten - es liest kaum einer)) * Der Hilfetext steht in einem extra dafuer angelegten TMemo-Feld - Soweit klappt natuerlich alles Ich habe alle TEdit-Felder mit der OnMouseEnter- Funktion auf eine Prozedur (OnMouseOverHelp) ausgestattet. Diese sieht momentan, ganz simpel beispielhaft fuer 2 Felder so aus:
Delphi-Quellcode:
Stellt man sich das ganze fuer 30-40 Felder vor, ist es natuerlich total unuebersichtlich.
procedure TForm1.OnMouseOverHelp(Sender: TObject);
begin if (sender as tcomponent).name = 'eingabe1' then MemoHelp.Text := 'Hilfetext 1 - Test 1 2 3 4 5' else if (sender as tcomponent).name = 'eingabe2' then MemoHelp.Text := 'Hilfetext 2 - Test 6 7 8 9 0'; end; Meine Idee war jetzt, das ganze in ein Array, bzw. eine Switch-Case zu setzen. Problem 1) So weit mir bekannt ist, kann ich Arrays aber nicht ueber array['eingabe1'] ansprechen - sondern nur ueber array[1]. (Egal ob das Array aus Strings oder Integer besteht) Problem 2) Das gleiche gilt fuer Switch-Case. Auch hier kann ich nur ueber Integer gehen. Eine Moeglichkeit waere, das Switch-Case zu verbiegen - Hier habe ich schon einige Ansaetze gesehen, wie man dieser Funktion auch Strings beibringt. Ist das ganze wirklich so sauber? :) Gibt es denn Moeglichkeiten, das Array per Namen anzusprechen? Alternativen? Wie koennte man das Problem noch schoener loesen? Bin natuerlich fuer jede Hilfe Dankbar! Gr. aayb |
Re: HilfeText- OnMouseEnter (Array?)
Genial einfach:
Delphi-Quellcode:
Nachtrag: du kannst auch 2 verschiedene Hinttexte hinterlegen.
procedure TForm1.OnMouseOverHelp(Sender: TObject);
begin if sender is Tcontrol then MemoHelp.Text := TControl(Sender).Hint; end; Und Hints auf der Statusleiste werden immer sehr gerne genommen.
Delphi-Quellcode:
procedure TForm1.OnMouseOverHelp(Sender: TObject);
begin if sender is Tcontrol then begin MemoHelp.Text := GetLongHint(TControl(Sender).Hint); Statusbar.SimpleText := GetShortHint(TControl(Sender).Hint); end else begin MemoHelp.Text := ''; Statusbar.SimpleText := ''; end end; |
Re: HilfeText- OnMouseEnter (Array?)
Hm. Haette man drauf kommen koennen.
Die Idee ist schonmal genial :) Ich haette es wohl dazu schreiben sollen, hatte ich allerdings eben nicht dran gedacht. Der Text wird aus dem Hint-Feld genommen. Nun wuerde ich darueber gern noch eine Uebschrift setzen. Also sinngemaeß wuerde nun im Hint-Feld stehen: "Benutzername#13#10Bitte geben Sie Ihren Benutzernamen ein" Und in dem Memo wuere dann erscheinen: Benutzername: Bitte geben Sie Ihren Benutzernamen ein. Ich muesste das ganze also nun mit MemoHelp.Lines.Add() realisieren, da ich mit Text keine Zeilenumbruech hinbekomme (Richtig?). Nur - wie definiere ich nun den Namen des Eingabefeldes? Der einzige Text den ich nun habe, kommt aus dem Hint-Feld. Wuerde ich "MemoHelp.Lines.Add((sender as tcomponent).name);" vor die Funktion setzen, kommt schlussendlich folgendes dabei raus: eingabefeld1 Benutzername#13#10Bitte geben Sie Ihren Benutzernamen ein Als Idee haette ich spontan, das Hint-Feld zu vor dem Lines.Add zu zerschneiden. Beispiel des Hint-Feldes: Benutzername||Bitte geben Sie Ihren Benutzernamen ein Ich jage - gesplittet durch "||" - alle Einzelteile in ein Array und fuege diese dann per Lines.Add in das Memo. Ich hoffe es war einigermaßen verstaendlich ausgedrueckt. Evtl. hast du auch hier eine Klasse Idee? Besten Dank schonmal! Gr. aayb |
Re: HilfeText- OnMouseEnter (Array?)
Hehe,
ich habe gerade erst deinen Nachtrag gelesen. Ich denke, das ist schon die Loesung fuer meine Frage gewesen :-) Ich setze die Ueberschrift in die kurze Hint - und den Text in die lange Hint. Werd mich mal schlau machen, wie ich die unterschiedlich definieren kann. :-) Besten Dank! Gr. aayb |
Re: HilfeText- OnMouseEnter (Array?)
Man kann übrigens auch Zeilenumbrüche und Hint- und Caption Properties einfügen.
Dazu muss ein Property-Editor installiert werden. Diese Komponente hat zwar schon Staub angesetzt, funktioniert aber nach ein paar Änderungen: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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