Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
13. Apr 2007
müßte gehen (denk ich jetzt mal)
aber so geht es dann halt nur dafür, wo du diese Ereignisprozedur angegeen hast (darfst dann also nichts vergessen, da du es ja bei JEDER andendern Komponenten eintragen mußt)
procedure TForm1.IrgendwasOnExit(Sender: TObject);
begin
if Form1.ActiveControl = ListBox1 then
begin
Sender.SetFocus;
end
else
begin
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
13. Apr 2007
:angel:
Schon allein wenn du die Maus nur über die ListBox bewegst würde OnMouseMove ausgelöst.
und du mußt ja die Maus erstmal über die ListBox schieben, damit du draufklicken dannst.
(es sei denn das Programm startet und die Maus ist schon reinzufällig an der richtigen Stelle)
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
13. Apr 2007
MouseMove tritt immer ein, wen die Maus über das Element fährt, egal ob dieses den Fokus hat, oder nicht.
OnExit ist zwar schön, nur kennt nicht alles dieses Ereignis und für jedes Element auf der Form dieses einzurichten könnte auch noch ein bissl viel sein.
Da macht sich etwas, welches nur in der ListBox und/oder Forum ist einfacher.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
13. Apr 2007
dann eher so:
procedure TForm1.ListBox1MouseMove...;
begin
if ActiveControl <> ListBox1 then
LastFocus := ActiveControl;
end;
denn bis ListBox1MouseUp aufgerufen wurde, hatte sich vorher mal die Maus über der ListBox befunden/bewegt und LastFocus wäre demnach ListBox1 :stupid:
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
13. Apr 2007
Du kannst ja den Focus wieder woanderes hinsetzen, nachdem mit der Maus da reingeklickt wurde.
procedure TForm1.ListBox1MouseUp...;
begin
Edit.SetFocus;
// oder Form1.ActiveControl := Edit1;
// oder ...
end;