Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Für Fragen rund um die Ide und zum Debugger
Antworten
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von br_klaus »

Aus einem unerfindlichen Grund (wahrscheinlich habe ich das Fenster im Eifer des Gefechtes zu weit an die Seite gedrängt - oder was könnte sonst der Grund sein?) ist seit ein paar Tagen das Nachrichtenfenster nicht mehr sichtbar. Ich kann es zwar über das Menü "Fenster" oder "Ansicht" aktivieren (kann es sogar in Windows (habe Win7, Lazurus 1.1, FPC 2.71) über die Tastenkombination ALT-TAB als Element mit dem Lazaruslogo sehen, aber ich habe keinerlei Möglichkeit darauf zuzugreifen, um es wieder sichtbar zu machen.
Weiß einer eine Lösung? Vielleicht in die "Innereien" von Lazarus eingreifen und da bei den Fenstern eine zusätzliche Tastenkombination (SHIFT-CTRL-ALT-W o.ä.) einfügen, die bewirkt, daß das aktive Fenster, falls es unsichtbar ist, sichtbar wird, so daß man darauf zugreifen kann).

Bin dankbar für jede Hilfe.

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von Heinrich Wolf »

Hallo,

ich kann Dir leider nicht helfen. Wenn man wüsste, wo Lazarus die Fensterposition speichert, könnte man sie editieren.

Für meine eigenen Projekte hab ich mir Funktionen geschrieben (LoadFormFromIni, SaveFormToIni, LoadFormFromReg, SaveFormToReg), deren Funktionalität ich auch den Lazarus Entwicklern ans Herz legen würde: In LoadFormFrom... wird die Fensterposition nicht ungeprüft übernommen, sondern korrigiert, falls das Fenster nicht im sichtbaren Bereich von Screen zu liegen kommen würde.

Heiner

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von m.fuchs »

Code: Alles auswählen

Werkzeuge -> Einstellungen -> Umgebung -> Fenster
Dort findet man dann alle Fensterpositionen und kann sie auch editieren.

hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von br_klaus »

Vielleicht noch eine einfachere Möglichkeit: im Menü "Fenster" einen weiteren Eintrag: sichtbar zentrieren", so daß das entsrechende Fenster dann in der Mitte des Bildschirms sichtbar zentriert wird.
Weiß jemand, welche Komponenten dafür "zuständig" sind?

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von corpsman »

Eigentlich gabs zu dem Thema auch inige Bug Reports, einen davon hatte sogar ich mal geschrieben, evtl müsste man da mal wieder einen Aufmachen ...

Evtl probierst du mal Manual Dock aus, das bindet das Nachrichtenfenster in das Source Fenster ein, so wie man es von Delphi her kannte ( zumindest wars bei D5 so *g*).
--
Just try it

Achtzig
Beiträge: 90
Registriert: Mo 15. Okt 2007, 13:09
OS, Lazarus, FPC: Debian
CPU-Target: xxBit

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von Achtzig »

Ich habe zwar schon ewig kein Windows mehr aber als ich mal ein Fenster aus dem Desktop geschoben hatte, ging ich einfach über das Fenstermenü. Also Fenster auswählen mit Alt+Tab, die Taste zum öffnen des Fenstermenüs klicken (weiß gerade nicht, welche das ist. Zu lange her :wink: ), dann auf den Menüpunkt "verschieben" oder "bewegen" gehen (mit der Kurzwegtaste - welche das ist, einfach in einem sichtbaren Fenster nachgucken) und dann das Fenster mit den Pfeiltasten wieder in den Desktop bewegen.

Nachtrag: Oh, ich habe hier einen Schnitt von einem Beitrag pro Jahr :oops:

... Bekam eben noch den Tipp, einfach unten in der Taskleiste beim Fenster "verschieben" auszuwählen. Und dann halt mit den Pfeiltasten verschieben.

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar! -- GELÖST !

Beitrag von br_klaus »

Lazarus – Nachrichtenfenster unsichtbar

Ich hatte vergessen zu sagen, dass dieser Fehler nicht beim „normalen“ Lazarus auftritt, sondern beim Lazarus, wie es CodeTyphon mitgeliefert wird (ansonsten ein ausgezeichnetes Programm mit vielen eingebauten Hilfsprogrammen und schon vorinstallierten Lazarus-Packages fremder Anbieter, Freeware und sehr zu empfehlen!)

Erst einmal suchte ich (im normalen Lazarus) nach der Tastenkombination (’Shift+Strg+W’), die zu Beginn des Fenster-Menüs erscheint.
Mit der Suche nach dem virtual key VK_W wurde ich schließlich fündig in der Unit KeyMapping in der
procedure TKeyCommandRelation.GetDefaultKeyForWindowsScheme
beim Eintrag des EditorCommand, der im FensterMenü zum Aufruf des Fenstermanagers verwendet wird):

Code: Alles auswählen

Case command of
		....
		  // window menu
  		ecWindowManager:       SetSingle(VK_W,[ssShift,ssCtrl]);
und in mainbar.pas die Prefixe der anderen Menüs:

mnuWindow --> Fenster
mnuView --> Ansicht

mit dem Window-Menu kam ich nicht klar, da fand ich keine Möglichkeit, da irgendetwas anzuhängen (einen weiteren Eintrag Menuitem, weil alle die Fenster miteinander mit vordefinierten commands zusammenhängen). Mir scheint das höchst kompliziert zu sein und ließe sich wahrscheinlich auch einfacher programmieren, aber die Schöpfer von Lazarus werden schon wissen, was sie tun...

Im Ansicht-Menü fand ich

Code: Alles auswählen

procedure TMainIDEBase.SetupViewMenu;
und dort beim 3. Eintrag ( = Nachrichten):

Code: Alles auswählen

CreateMenuItem(ParentMI,
itmViewMessage,'itmViewMessage',lisMenuViewMessages);
Die Suche nach ViewMessage führte mich zur Unit MsgView:

Code: Alles auswählen

TMessagesView = class(TIDEMessagesWindowInterface)
zum

Code: Alles auswählen

constructor TMessagesView.Create(TheOwner: TComponent):
  Name   := NonModalIDEWindowNames[nmiwMessagesViewName];  // ==>  = NachrichtenFenster 
  Caption := lisMenuViewMessages;
und in in der Unit Main zu:

Code: Alles auswählen

procedure TMainIDE.CreateIDEWindow(Sender: TObject; aFormName: string; var
  AForm: TCustomForm; DoDisableAutoSizing: boolean);
…
  if ItIs(NonModalIDEWindowNames[nmiwMessagesViewName]) then
       AForm:=MessagesView
d.h. Nachrichten-Fenster = MessagesView !


Und schließlich fand ich:

Code: Alles auswählen

procedure TMainIDE.OnGetLayout(Sender: TObject; aFormName: string; out
  aBounds: TRect; out DockSibling: string; out DockAlign: TAlign);
...
  if (aFormName=NonModalIDEWindowNames[nmiwMessagesViewName]) then begin
    // place messages below source editor
    ScreenR:=IDEWindowCreators.GetScreenrectForDefaults;
    if SourceEditorManager.SourceWindowCount>0 then begin
      SrcEditWnd:=SourceEditorManager.SourceWindows[0];
      aBounds:=GetParentForm(SrcEditWnd).BoundsRect;
      aBounds.Top:=aBounds.Bottom+25;
      aBounds.Bottom:=aBounds.Top+100;
    end else begin
      aBounds:=Rect(ScreenR.Left+250,ScreenR.Bottom-200,ScreenR.Right-250,100);
    end;
d.h. hier werden die Startwerte des Nachrichtenfensters angegeben, wenn es erstellt wird (unterhalb des QuelltextEditors = Source Editor oder alleine) die ich dann nur zu kopieren brauche, um mit einem ShortCut das Fenster wieder neu so zentriert zu zeigen.

Aber da scheint mir doch ein kleiner Fehler zu sein:
Rect(ScreeR.Left+250, ScreenR.Bottom-200, ScreenR.Right-250, 100)
ergibt keinen rechten Sinn: da ist ja der Wert für top größer als der für Bottom, es muß wohl heißen ScreenR.Bottom-100 anstatt nur 100
(War das vielleicht der Grund, daß das Fenster unsichtbar blieb?)

Ich muß also eine Prozedur suchen mit KeyDown, von der aus ich den Reset aufrufen kann, am besten innerhalb der Prozedur vor dem begin;

Code: Alles auswählen

Procedure xxxKeyDown (Sender: TObject; var Key: Word;  Shift: TShiftState);
  var ....
 
  Procedure DoResetMessagesView;
    Var R, ScreenR:TRect;
    begin
      ScreenR:=IDEWindowCreators.GetScreenrectForDefaults;
      with ScreenR do R:=Rect(Left+250, Bottom-200, Right-250, Bottom-100);
     With R do MessagesView.SetBounds(left, top, right-left, bottom-top);
      MessagesView.Show;
    end;
 
  begin
       if (key=VK_Z) and (ssShift in Shift) and (ssCtrl in Shift) then
          begin
               DoResetMessagesView;
               exit;
          else
begin ...
end
end;
In Lazarus wird die Form MessagesView immer mit ShowModal aufgerufen. Was ist der Unterschied zu Show? Soll ich das dann hier auch schreiben?

Ich versuchte es mit TMainIDE, mit dem QuellcodeFenster, Lazarus neu kompiliert, ---> Ergebnis immer das gleiche: bleibt unsichtbar.
Was könnte ich da noch tun? Wo oder was könnte der Wurm sein?


-------------------------------------

Habe noch ein wenig herumprobiert, plötzlich bekam ich zumindest den oberen Rand des Nachrichtenfensters zu fassen und konnte das Fenster nach oben ziehen! (Wie kann man es machen, daß in Windows die untere Taskbar zum Verschwinden kommt? Es scheint nämlich, daß sich das Fenster dahinter versteckt hatte).

Habe gesehen, daß beim Starten die Daten aus environmentoptions.xml geladen werden, und da fand ich
für SourceNotebook: (Bounds) 307, 206, 914, 581 und für MessagesView: 306, 826, 913, 90.
Änderte die Angaben um in 307, 206, 914, 381 und: 306, 726, 913, 90,
also Quellcode-Fensterhöhe -200, NachrichtenFenster-Top -100 ,
Jetzt wurde das QuellCode-Fenster auch etwas kleiner dargestellt und erschien dahinter auch das Nachrichtenfenster!

Wie muß man die Einstellungen machen, daß jedes Mal beim Beenden die Fenstergrößen gespeichert werden, daß ich nicht von Hand die Angaben in environmentoptions.xml vornehmen muß?

--------------------------------------------------

Fand aber doch einen Bug in Lazarus (normal und CodeTyphon).
Wenn kein Nachrichtenfenster da ist, dann kann man es nur mit dem Fenster-Menu aufrufen (nur da erscheint der Eintrag "Nachrichten"), aber das (erstellt und) aktiviert nicht die Nachrichten, sondern das Quellcode-Fenster. Erst wenn es dann mit dem Fenster-Menü aufgerufen wird, dann wird es aktiviert.

Aber jetzt kann ich wenigstens wieder normal arbeiten.
Herzlichen Dank für alle geuten Ratschläge.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Hilfe, Nachrichtenfenster nicht mehr sichtbar!

Beitrag von hde »

br_klaus hat geschrieben:Wie kann man es machen, daß in Windows die untere Taskbar zum Verschwinden kommt?
Mit der rechten Mauste, Einstellungen, "Taskleiste automatisch asblenden" anhaken ..
oder einfach oben, rechts oder links andocken

Antworten