![]() |
Komponenten Highlighter
Hallo an alle,
hat jemand eine Idee wie ich sämtliche Eingabefelder (TEdit, TDBEdit, TDBLookup...) bei der focuserhalt Highlighten kann? Das heist wenn aktiv dann eine andere Hintergrundfarbe und wenn nicht mehr aktiv dann wieder normal. Danke |
Moin Primus,
ich weiss natürlich nicht, ob alle die Komponenten, die Du verwenden willst über diese Events verfügen, aber Du könntest im OnEnter/OnExit Event die Farbe(n) entsprechend setzen. |
Tach Chris,
das hatte ich schon mal versucht aber das bläht ja den Code so auf, es handelt sich um eine Verwaltungssoftware für eine Rettungsdienstbereitschaft, sind so ungefähr 200 Eingabefelder. Ich dachte mehr so an eine Funktion die bei jeglichem Focus die Farbe der Komponente ändert. :roll: |
Das sind höchstens 10 Zeilen Code. :roll: Und sowas nennst du Code aufblähen? :shock:
|
Hi Primus,
du musst ja nicht für jede Komponente einen OnEnter/OnExit-Event-Handler schreiben. Schreib doch einen und stell im Objektinspektor unter "Events" einfach immer die gleiche Prozedur ein, das dürfte den Code kaum aufblähen. MfG, d3g |
Dann wird doch immer das eine Button grün. egal über welches Feld man geht :-(
|
Moin Thomas,
nein, man bekommt im Parameter Sender ja übergeben, bei welcher Kompo das Ereignis ausgelöst wurde, und kann dann entsprechend abfragen, z.B.
Code:
Mit anderen Controls und/oder Eigenschaften entsprechend.
[b]if[/b] (Sender [b]is[/b] TButton) [b]then[/b]
[b]begin[/b] [color=#000080]// z.B. [/color] TButton(Sender).Font.Size := 12; [b]end[/b]; |
Schon mal folgendes im Code gesehen: Sender as TObject?
Da mit kannst du prüfen welcher Button das Ereignis ausgelöst hat. |
Hallo,
mann an so was hätte ich ja auch denken können. :oops: Danke für die Hilfe, manchmal sieht mann den Wald vor lauter Programmzeilen nicht... Tschuss Primus |
Nochmal Sender ...
Moin,
ich habe ein ähnliches Problem, wie es hier auch schon behandelt wurde. Also, in einer ListBox habe ich folgendes stehen ...
Code:
Das bedeutet ja das er, wenn die Abfrage True ist, das Ereignis CheckBox1Click ausführt.
If MidStr(Erinnern[Lst_Artikel.ItemIndex + 1] ,1,1) = '1' then CheckBox1.Checked := True;
Dort soll er eine Variable wieder auf False setzten, aber nur wenn das Ereignis nicht von der ListBox ausgelöst wird, sondern direkt von der CheckBox. Nachdem ich das hier gelesen habe, habe ich es mit folgendem Code probiert, den ich in die CheckBox1Click Prozedur gelegt habe...
Code:
Aber immer ohne Erfolg. Wenn ich mir das während des Debbugens angucke ist die VAR Sender immer leer. (Egal wer das Ereignis auslöst).
If Sender is TListBox then Exit; ... oder ...
If Sender = Lst_Artikel then Exit; ... oder ... If (Sender is TListBox) then Exit PS: Natürlich ist Sender deklariert... Grüsse, Ricane |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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