Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Mehrere Formobjekte mit Focused = True? (https://www.delphipraxis.net/156460-mehrere-formobjekte-mit-focused-%3D-true.html)

Freiwilderer 2. Dez 2010 16:07

Delphi-Version: 7

Mehrere Formobjekte mit Focused = True?
 
Hallo,
ich habe ein seltsames Phänomen. Und zwar will ich im FormKeydown abfragen, ob ein bestimmtes Objekt den Focus hat oder nicht. Wenn der Key dann ein VK_Return is, soll er was bestimmtes machen.
Irgendwie macht er das aber immer und nicht nur, wenn das feld fokusiert ist...
Habe dann im debuger geschaut, ob Focused wirklich true ist.
Wenn ich den cursor über das Focused halte, wird angezeigt: Nicht verfügbarer Wert
Wenn ich im Debug-Inspektor nachschaue, steht dort True.

Das ist bei mehreren Objekten gleichzeitig und ich steh da momentan zugegeben ziemlich auf dem schlauch ...
Die meisten Objekte sind TMaskEdits, das selbe habe ich aber auch bei einer TRadioGroup und einem cxGridDBTableView ...

Hat jemand eine Idee, woran das liegen könnte?

würde mich über hilfe sehr freuen,

mfg
Freiwilderer

DeddyH 2. Dez 2010 16:21

AW: Mehrere Formobjekte mit Focused = True?
 
Es kann immer nur ein Control den Fokus haben. Zeig doch einmal Deinen Code.

Freiwilderer 2. Dez 2010 16:29

AW: Mehrere Formobjekte mit Focused = True?
 
naja, das hab ich auch gedacht ;)

sinngemäß steht da das hier, der komplette code wäre zu komplex, aber mehr macht der an der stelle nicht.


Delphi-Quellcode:
procedure TfParcel.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
var intTemp: int64;
begin
   inherited;
   if ButtonMode in [bmBrowse, bmSearch] then
   begin
      case Key of
         vk_Return:
                        begin
                            if (ButtonMode in [bmSearch]) and (qParcelLocal.Active) and (meSenderID.Focused or meClientRef.Focused or               ieEplIdFrom.Focused or ieEplIdTill.Focused or
            dtpOutboundDateFrom.Focused or dtpOutboundDateTill.Focused or meReceiverCtrCode.Focused or meReceiverZipcode.Focused or RadioGroup1.Focused) then
                                    showmessage('Hallo');
                        end;
        end;
end;

DeddyH 2. Dez 2010 16:32

AW: Mehrere Formobjekte mit Focused = True?
 
Die Bedingung trifft ja zu, wenn eines der angegebenen gefühlten 23.000 Controls den Fokus hat (sofern die anderen Bedingungen zutreffen).

Freiwilderer 2. Dez 2010 16:49

AW: Mehrere Formobjekte mit Focused = True?
 
Ja, ich weiß
Aber die sind alle true^^
auch, wenn ich gar keinen ausgewählt hab ...
Eigentlich sollte das nur das Grid abfragen, aber das ging ja nich, weil das auch immer fokussiert war ;)

DeddyH 2. Dez 2010 16:55

AW: Mehrere Formobjekte mit Focused = True?
 
Und wenn Du statt auf Focused einmal das ActiveControl abfragst? Macht in meinen Augen zwar nicht viel Sinn, einen Versuch ist es aber wert.

Freiwilderer 2. Dez 2010 17:03

AW: Mehrere Formobjekte mit Focused = True?
 
Hmm, ich werd das mal testen, bin leider oder eher zum Glück nich mehr auf der Arbeit ;)
Vielleicht klappt's ja damit, kann mir das auch nich erklären ...
Danke schonmal für den tip

mkinzler 2. Dez 2010 18:53

AW: Mehrere Formobjekte mit Focused = True?
 
Bist du sicher, dass .Focused bei allen True ist? Wenn keine vollständige Boolean-Evaluierung aktiviert ist, dann bricht er bei or beim 1. wahren Term ab, da das ergebnis dann ja insgesamt wahr wird

Freiwilderer 2. Dez 2010 19:40

AW: Mehrere Formobjekte mit Focused = True?
 
Ich hab im Debugger ja nachgeschaut ...

Ich glaub auch nich wirklich, dass die alle true sind, aber es wird da nunmal so angezeigt und das programm verhält sich auch so als ob ...

Freiwilderer 3. Dez 2010 07:42

AW: Mehrere Formobjekte mit Focused = True?
 
so gehts ....

Delphi-Quellcode:
            if (ButtonMode in [bmSearch]) and (qParcelLocal.Active) and NOT(ActiveControl = meSenderID) and NOT(ActiveControl = meClientRef) and NOT(ActiveControl = ieEplIdFrom)
             and NOT(ActiveControl = ieEplIdTill) and NOT(ActiveControl = dtpOutboundDateFrom) and NOT(ActiveControl = dtpOutboundDateTill) and NOT(ActiveControl = btnRestrictParcels)
             and NOT(ActiveControl = meReceiverCtrCode) and NOT(ActiveControl = meReceiverZipcode) and NOT(ActiveControl = RadioGroup1) then
verstehs zwar immer noch nicht (zumal das mit dem control des express grid views nich funktioniert hat)
danke für den tip :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz