AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Cannot focus a disabled or invisible window....
Thema durchsuchen
Ansicht
Themen-Optionen

Cannot focus a disabled or invisible window....

Ein Thema von barnti · begonnen am 19. Apr 2004 · letzter Beitrag vom 20. Apr 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 14:43
Ich weiß,
dass es dieses Problem hier schon häufiger gab. Leider kann ich damit aber nichts anfangen, daher meine erneute Frage zum Thema:

Ich habe eine DBLookupComboBox. Wenn ich diese öffne oder wenn ich einen Eintrag auswähle kommt die Fehlermeldung:
Cannot focus a disabled or invisible window Was bedeutet, dass ich irgentwo in meinem Code die Anweisung gebe 'IrgenteinFenster.setfocus', dieses Fenster aber den Fokus nicht erhalten kann.
Da ich keine Ereignisbehandlungeroutine für 'DBCombobox.OnClick' oder 'DBCombobox.OnCloseUp' habe, weiß ich nicht wie ich den Fehler im Code finden kann.

Ich habe folgendes versucht:

-alle Aufrufe von 'IrgenteinFenster.setfocus' mit Breakpoint versehen

- Step by step ausführung meines Codes: dauert ewig und springt bei aktivierung der Anwendung immer wieder in den Code zurück


Kann mir jemand einen Tip geben, wie ich effektiv diesen Fehler eingrenzen und beseitigen kann?

Danke!!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 15:05
Das bedeutet, das du mit SetFocus versuchst einen nicht sichtbaren Objekt (z.B. Visible=false, Enable=false, Objekt ist auf einem ausgeblendetem TabSheet/Form ...) den Fokus zu geben, was ja nicht geht, da es im Grunde genommen nicht da ist.

Du kannst eben nur einem sichtbaren Objekt den Fokus verpassen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 15:08
Hi,

das ist ja lieb gemeit von Dir. Aber wenn Du meinen Beitrag genau liest frage ich nicht was der Fehler bedeutet,
sondern wie ich die Stelle identifiziere, die den Fehler auslöst...

Aber vielleicht weißt Du darauf ja auch schon eine Antwort? Wäre super, denn ich hänge hier fest...
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 15:20
hab'sch mich wohl etwas verlesen.

Wann kommt denn meistens der Fehler - immer wenn du das selbe machst, oder unterschiedlich?
Und wie oft kommt xyz.SetFocus/ActiveControl=xyz bei dir vor?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 15:26
Hi,
Zitat von himitsu:
hab'sch mich wohl etwas verlesen.

Wann kommt denn meistens der Fehler - immer wenn du das selbe machst, oder unterschiedlich?
Und wie oft kommt xyz.SetFocus/ActiveControl=xyz bei dir vor?
Der Fehler passiert entweder, wenn ich einen Eintrag auswähle oder ich versuche die Liste zu öffnen.

Zur zweiten Frage:
Ich habe alle Aufrufe der Form '_.setfocus' mit einem Breakpoint versehen. Leider gibt es da das Problem, dass beim Erreichen eines Breakpoints und Weiterlaufen der Anwendung wieder der Breakpoint angelaufen wird (OnDrawColumncell), so dass mir der Breakpunkt dort nicht weiterhilft.

Ich habe versucht:

- DBlookupCooombobox.OncloseUp Leider wird der Fehler früher ausgelöst.
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 15:35
http://FNSE.de/1FB.gif hmmmm?

Also die Haltepunkte sind da wirklich etwas hinderlich ^^

Du könntest ja 'ne Logdatei einbauen, oder das, was wohl einfacher sein sollte, ertsmal alles was den Fokus verändert ausblenden/deaktivieren und dann erstmal testen, ob es wirklich daran liegt und dann Stück für Stück einzelne/mehrere Haltepunkte wieder einbinden und dazwischen nochmals testen....
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 16:00
Hallo himitsu,

ich habe den Fehler gefunden! Ich hatte vor einigen Tagen das Problem, dass beim Scrollen des Grids die besagte darüberschwebende LookupComboBox nicht verschwand. Ich wollte diese aber ausblenden. Tja und da haben wir auch schon dass Problem:

Im OnDrawCollumnCell mache ich folgendes:
Delphi-Quellcode:

procedure TForm_Main.DBGrid_DetailDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var Grid: TDBGrid;
begin

  DBLookupBox_GridDetail.Hide; // wenn ich das hier auskommentiere ist der Fehler verschwunden

    // Wenn das Feld fokussiert ist und ein Lookup dann...
  if (gdFocused in State) then
    if (Column.Field.Lookup) then
      begin
        //...setze Lookup-Attribute
        SetLookup(Grid,Column,DBLookupBox_GridDetail); // setzen der Lookup-Attribute
        if (Column.Field.KeyFields = DBLookupBox_GridDetail.KeyField) then
          PlaceLookupBox(DBLookupBox_GridDetail,Rect,Grid); // festlegen der Position der Box:

      end
      
   end;

procedure PlaceLookupBox(LookupBox: TDBLookupComboBox;const Rect: TRect; Grid:
            TDBGrid);
begin
  with LookupBox do
    begin // setze Eigenschaften
      Left := Rect.Left + Grid.Left + 2;
      Top := Rect.Top + Grid.Top + 2;
      Width := Rect.Right - Rect.Left-15;
      Height := Rect.Bottom - Rect.Top;
      DropDownWidth:= 250;
      BringToFront; // Ist dies das Problem?
      Visible := True;
      Form_Main.Label6.Caption:= 'Alles klar';
    end;
end;
Aber was ist jetzt der eigentliche Auslöser des Problems?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 16:33
Versuch mal zuerst die Komponente wieder einzublenden und dann nach vorn zu stellen.
Also die 2 Befehle auszutauschen.
Delphi-Quellcode:
Visible := True;
BringToFront;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Cannot focus a disabled or invisible window....

  Alt 19. Apr 2004, 16:45
Hi,

vielleicht ein grundsätzlicher Tip zur Fehlersuche in solchen oder ähnlichen Fällen:
Du kannst mit Ouputdebugstring oder mit nicht anhaltenden Breakpoints Meldungen in das Ereignisprotokoll schreiben, und so einen entsprechenden Fehler eventuell sehr viel schneller als im Einzelschrittmodus eingrenzen. Die nicht anhaltenden Breakpoints haben noch den Vorteil, daß du keinen Code produzierst, den du dann nachher wieder löschen mußt.

Grüsse
Woki
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Cannot focus a disabled or invisible window....

  Alt 20. Apr 2004, 08:28
Hi ihr zwei,

das mit dem Vertauschen der Befehle hat leider nichts gebracht!

Das mit dem DebugOutputstring werde ich mir mal genauer anschauen. Habe ich bisher nicht benutzt, ist aber wohl die Lösung für einen Fall wie diesen!

Danke euch beiden.

Gibt es noch eine Lösung für mein Problem? Kann ich die Box erst beim Scrollen im Grid ausblenden und dann irgentwo wieder einblenden? Bis jetzt kommt immer die Fehlermeldung, wenn ich die besagte Zeile:
DBLookupBox_GridDetail.Hide; wieder einkommentiere!?
Habe schon versucht sie wieder einzublenden, wenn sie durch
Delphi-Quellcode:
 if (gdFocused in State) then
    if (Column.Field.Lookup) then
      begin
        // hier wieder zeigen
        DBLookupBox_GridDetail.show;
        ...
      end;
benötigt wird. Leider kommt auch dann wieder die Fehlermeldung!

Gruß,

Barnti
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr.
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