![]() |
Gegenteil von SetFocus oder wie aktives Edit freigeben
Hallo,
habe ein Problem mit dem Freigeben von Eingabekomponenten. Steht diese im Editiermodus, also ich gebe z.b. gerade in tedit etwas ein, dann soll das edit freigegeben werden, dabei bekomme ich aber immer eine Zugriffsverletzung, da noch der Eingabefocus besteht! wie kann ich das lösen? gibt es ein gegenteil von setfocus welches ich vor dem freigeben der kompo aufrufen könnte? gibt es andere möglichkeiten? danke schon mal |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
Du willst ein TEdit in OnChange freigegeben? Das funktioniert nicht, da nach dem OnChange noch irgendwas mit dem Edit-Feld gemacht wird. Du müsstest es so wie TForm.Release machen. Heisst dir eine Windows-Message mit PostMessage an das Formular senden und dann in dieser Nachricht das Edit-Feld freigeben.
|
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
Moin ipb,
was hat das eigentlich für einen Sinn, bzw. was willst Du erreichen? |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
Ich muss ja nicht wissen wozu das gut sein soll - aber das hier geht:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.EditKeyPress(Sender: TObject; var Key: Char);
begin if Key = #13 then begin Key := #0; ActiveControl := nil; end; end; |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
mal etwas genauer...
1... eingabe in edit 2... neuer knoten in treeview anklicken 3... jetzt sollte ein neus formular aufgebaut werden dazu die alten kompos löschen das ist das problem, der eingabefocus bleibt beim edit! und dann knallt es. habe es schon mit edit.perform(wm_killfocus,0,0) probiert, klappt aber auch nicht! |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
Zitat:
|
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
Moin ibp,
Zitat:
Zitat:
Zitat:
Marabus Lösung zerstört das Control ja nicht. Ist das neue Formular jetzt ein wirklich neues, oder soll das Formular, in dem gerade etwas eingegeben wurde neu initialisiert werden? |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
@MeerKaninchen :zwinker: (war nur spass)
Zitat:
ja es ist ein neues formular. es ist so, wenn der user in das edit etwas eingibt dann wird beim knotenwechsel der datensatz der db upgedatet. das läuft auch alles. nun passiert beim neu erstellen des eingabe-formulars (neue db-tabelle) wenn das editfeld noch im "editmode" ist der fehler, genau dann wenn die "alten komponenten" gelöscht werden. daher wollte ich eigentlich soetwas wie das gegenteil von setfocus! um beim durchgehen der kompos vorher den möglichen eingabefocus zu beenden und dann die kompo zu löschen! hoffe habe mich jetzt klarer ausgedrückt! :stupid: |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
Zitat:
Ganz ehrlich, mit all deinen bisherigen Informationen kann ich mir immer noch kein Bild machen, was dein Problem ist. In deinem ersten Beitrag hast du von einem TEdit geschrieben, aber jetzt sickert langsam was durch, das mehr auf datensensitive controls schließen lässt. Bei einem TEdit nimmst du den Fokus so weg, wie ich es dir geschrieben habe, aber ich glaube du meinst etwas ganz anderes - kannst es nur nicht beschreiben - oder mein deutsch ist so schlecht, dass ich dich nicht verstehe. Freundliche Grüße marabu |
Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
@marabu
- ich kann aber nicht davon ausgehen, dass enter eingegeben wird! - stell dir vor du gibst ins edit nur 123 ein ohne es zu quittieren oder tab zu drücken, dann selektierst du einen anderen baumknoten, durch den anderen baumknoten wird ein neues formular erstellt, nachdem die anderen edits gelöscht werden! dann kracht es eben, weil das edit in dem du 123 eingegeben hast immer noch den editierfocus besitzt! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 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