AGB  ·  Datenschutz  ·  Impressum  







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

HilfeText- OnMouseEnter (Array?)

Ein Thema von aayb · begonnen am 7. Feb 2008 · letzter Beitrag vom 7. Feb 2008
Antwort Antwort
aayb

Registriert seit: 9. Jan 2008
14 Beiträge
 
#1

HilfeText- OnMouseEnter (Array?)

  Alt 7. Feb 2008, 12:36
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:
procedure TForm1.OnMouseOverHelp(Sender: TObject);
begin
 if (sender as tcomponent).name = 'eingabe1then
  MemoHelp.Text := 'Hilfetext 1 - Test 1 2 3 4 5'
 else if (sender as tcomponent).name = 'eingabe2then
  MemoHelp.Text := 'Hilfetext 2 - Test 6 7 8 9 0';
end;
Stellt man sich das ganze fuer 30-40 Felder vor, ist es natuerlich total unuebersichtlich.

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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: HilfeText- OnMouseEnter (Array?)

  Alt 7. Feb 2008, 12:41
Genial einfach:
Delphi-Quellcode:
procedure TForm1.OnMouseOverHelp(Sender: TObject);
begin
  if sender is Tcontrol then
    MemoHelp.Text := TControl(Sender).Hint;
end;
Nachtrag: du kannst auch 2 verschiedene Hinttexte hinterlegen.
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;
Andreas
  Mit Zitat antworten Zitat
aayb

Registriert seit: 9. Jan 2008
14 Beiträge
 
#3

Re: HilfeText- OnMouseEnter (Array?)

  Alt 7. Feb 2008, 13:30
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
  Mit Zitat antworten Zitat
aayb

Registriert seit: 9. Jan 2008
14 Beiträge
 
#4

Re: HilfeText- OnMouseEnter (Array?)

  Alt 7. Feb 2008, 13:32
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: HilfeText- OnMouseEnter (Array?)

  Alt 7. Feb 2008, 15:12
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:
http://delphi.icm.edu.pl/ftp/d40free/proped.zip
Andreas
  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 02:57 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