![]() |
Zustand eines Buttons erfahren
Mit der folgenden Routine, die natürlich nicht funktioniert, möchte ich mein Problem beschreiben:
Delphi-Quellcode:
In JvEditRohwareNr überprüfe ich die Eingabe nach bestimmten Kombinationen. Solange es keine Übereinstimmung gibt, springe ich wieder zurück in dieses JvEditRohwareNr-Feld. Die überprüfung findet im OnExit-Event. Wie stelle ich fest, dass JvHTButtonAbbrechen gedrückt wurde?
if not (Sender Is JvHTButtonAbbrechen) then
JvEditRohwareNr.SetFocus; Danke. |
AW: Zustand eines Buttons erfahren
In dem Du auf das Drücken reagierst.
|
AW: Zustand eines Buttons erfahren
Das sollte funktionieren:
Delphi-Quellcode:
if ActiveControl <> JvHTButtonAbbrechen) then
JvEditRohwareNr.SetFocus; |
AW: Zustand eines Buttons erfahren
Ich vermute aber mal, das das eine Event das OnExit des Edits ist und das andere Event das OnClick des Buttons und dass beide ausgelöst werden, wenn der Cursor im Edit steht und dann auf den Button geklickt wird und dass dann irgendwas durcheinander kommt. Anders kann ich mir den Sinn der Frage nicht erklären?
|
AW: Zustand eines Buttons erfahren
Das Problem ist, dass OnExit vor ButtonClick ausgelöst wird.
|
AW: Zustand eines Buttons erfahren
Leider kennt Delphi7 Ent. kein ActiveControl. Sorry habe vergessen das zu schreiben.
|
AW: Zustand eines Buttons erfahren
Ich bin mir nicht sicher. Aber mit ein bisschen mehr Code könnte sich das Problem sicherlich schneller lösen lassen.
|
AW: Zustand eines Buttons erfahren
Zitat:
|
AW: Zustand eines Buttons erfahren
In JvEditRohwareNr überprüfe ich die Eingabe nach bestimmten Artikelnr. Diese Artikelnr. wird aber von einem anderem Anwender und Programm erstellt. Wenn diese Artikelnr. schon existiert, dann gibt es keine Probleme, ausser man hat sich verschrieben (deshalb der SetFocus auf das Editfeld). Wenn sie jedoch noch nicht erstellt wurde, dann könnte der Anwender meines Programms diese Eingaben erstmal beenden und andere Sachen machen. Abbrechen dann mit einem Button. Ich hoffe, es ist jetzt etwas verständlicher.
|
AW: Zustand eines Buttons erfahren
Möchte nur mit Drücken von Abbruchbutton die Setfocus nicht ausführen. Es könnte sein dass Jasocul hier das Problem beschrieben hat.
|
AW: Zustand eines Buttons erfahren
Dann prüfe einfach in
Delphi-Quellcode:
des Edits nicht auf eine gültige Nummer, sondern erst dann, wenn der Anwender eine bestimmte Aktion auslöst (erst dann will er ja etwas mit der Eingabe anfangen)
OnExit
|
AW: Zustand eines Buttons erfahren
Hmm, leider kann ich das Feld auch nicht leer lassen, dass wäre ein mögliches Abbruchskriterium, eber es darf nicht leer bleiben, weil mit einer gültigen Artikelnr. auch andere Artikeleigenschaften ausgelesen werden.
|
AW: Zustand eines Buttons erfahren
Mache einen OK-Button, der beim OnClick alle Prüfungen macht, bei nicht OK, den Fokus aufs Edit setzen und mache einen Abbruch-Button, der beim OnClick irgendwas anderes macht.
|
AW: Zustand eines Buttons erfahren
Zitat:
|
AW: Zustand eines Buttons erfahren
Ja. Muß ich mir was überlegen in dieser Richtung. Chef ist aber nicht begeistert von so vielen Mausgeklicke. Ich dachte, es gäbe einen einfacheren Weg.:(
|
AW: Zustand eines Buttons erfahren
Zitat:
Oder merk die den Status Oder merk dir die Maus position Oder weiß der Geier... Ohne Infos keine Lösung. |
AW: Zustand eines Buttons erfahren
Wie wäre es denn, das Edit nach Eingabe einer ungültigen Zahl und "Exiten" farblich zu markieren? Oder ein Icon daneben an dem man erkennt, dass die Eingabe nicht gültig ist. Die restlichen abhängigen Daten werden dann halt einfach nicht geladen, und der OK-Button disabled. Das würde ich als übliches Vorgehen ansehen.
|
AW: Zustand eines Buttons erfahren
Zitat:
An der Funktionalität hat sich zwischen Delphi 3 und Delphi 10 Seattle auch nichts Grundlegendes geändert, SetFocusedControl sieht noch recht ähnlich aus. SetFocusedControl könntest du übrigens auch überschreiben und das OnExit vor dem Aufruf von inherited auf nil setzen, wenn der gewünschte Button gerade fokussiert wird (wird als Parameter übergeben). Es funktioniert hier aber auch in Delphi 7 wunderbar mit der Prüfung im OnExit des Edits, ob ActiveControl der Button ist. Dort steht da schon das neu fokussierte Control drin. |
AW: Zustand eines Buttons erfahren
Zitat:
ActiveControl ist übrigens eine Eigenschaft von TForm (bzw. TCustomForm). In der Delphi-Hilfe steht unter Anderem: Zitat:
|
AW: Zustand eines Buttons erfahren
Hallo,
es ist schon länger her, jedoch wollte ich mich für die Tips noch bedanken. Aktuell stand ich wieder vor diesem Problem und habe festgestellt dass jaenicke hier völlig richtig lag.
Delphi-Quellcode:
ActiveControl ist natürlich eine Eigenschaft von TForm und nicht des TButton. Damit funktioniert es dann.
if Form1.ActiveControl <> JvHTButtonAbbrechen) then
JvEditRohwareNr.SetFocus; Danke. |
AW: Zustand eines Buttons erfahren
Wenn der Code jetzt in einer Methode von TForm drin steht, dann hoffe ich jemand haut dich, wenn du wirklich die globale Variable (Form1) verwendest.
|
AW: Zustand eines Buttons erfahren
Bitte um kurze Erläuterung?
|
AW: Zustand eines Buttons erfahren
Du willst ja auf das ActiveControl der eigenen Instanz zugreifen, nicht auf das derjenigen, die in Form1 abgelegt wurde (sofern es die überhaupt gibt).
|
AW: Zustand eines Buttons erfahren
Willst du unbedingt eine "Variable" Verwenden, dann nimm Self.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 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