Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Gegenteil von SetFocus oder wie aktives Edit freigeben (https://www.delphipraxis.net/60530-gegenteil-von-setfocus-oder-wie-aktives-edit-freigeben.html)

ibp 8. Jan 2006 16:32


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

jim_raynor 8. Jan 2006 16:39

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.

Christian Seehase 8. Jan 2006 16:45

Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
 
Moin ipb,

was hat das eigentlich für einen Sinn, bzw. was willst Du erreichen?

marabu 8. Jan 2006 16:45

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:
procedure TDemoForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    ActiveControl := nil;
  end;
end;
Grüße vom marabu

ibp 8. Jan 2006 16:48

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!

ibp 8. Jan 2006 16:52

Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
 
Zitat:

Zitat von marabu
Ich muss ja nicht wissen wozu das gut sein soll - aber das hier geht:

Delphi-Quellcode:
procedure TDemoForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    ActiveControl := nil;
  end;
end;
Grüße vom marabu

da hast du mich falsch verstanden, es geht nicht darum bei der eingabe das edit zu zerlegen!

Christian Seehase 8. Jan 2006 16:59

Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
 
Moin ibp,

Zitat:

Zitat von ibp
es geht nicht darum bei der eingabe das edit zu zerlegen!

das hast Du allerdings zweimal so geschrieben ;-)

Zitat:

Zitat von ibp
...dann soll das edit freigegeben werden, ...

Zitat:

Zitat von ibp
3... jetzt sollte ein neus formular aufgebaut werden dazu die alten kompos löschen

Abgesehen davon:
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?

ibp 8. Jan 2006 17:15

Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
 
@MeerKaninchen :zwinker: (war nur spass)

Zitat:

Marabus Lösung zerstört das Control ja nicht.
ist klar aber er dachte sicherlich, dass ich es beim editieren zerstören will, dem ist ja nicht so!

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:

marabu 8. Jan 2006 17:55

Re: Gegenteil von SetFocus oder wie aktives Edit freigeben
 
Zitat:

Zitat von ibp
ist klar aber er dachte sicherlich, dass ich es beim editieren zerstören will

Hat er nicht!

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

ibp 8. Jan 2006 18:59

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.
Seite 1 von 2  1 2      

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