Fensterposition

Für Fragen von Einsteigern und Programmieranfängern...
Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Fensterposition

Beitrag von Andy Nightingale »

Hallo Leute,
Ich habe fünf Fenster. Ein großes Hauptfenster das ist in der Mitte. Nun wollte ich die anderen 4 Fenster jeweils eines rechts oben...ein links oben und die andern zwei unten jeweils rechts und links. Das mittlere klappt aber wie mache ich die anderen vier?
Grüße

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 376
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Fensterposition

Beitrag von Jorg3000 »

Hi
Meinst du soetwas ... oder hattest du etwas spezielles im Sinn?

Code: Alles auswählen

 
   Form2.SetBounds(x,y,w,h);
 

Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Re: Fensterposition

Beitrag von Andy Nightingale »

Gibt es dazu ein Beispiel? Es muß so sein das egal auf was für einem Bildschirm die Fenster immer rechts ...links und unten rechts links sind. Bin eben noch Anfänger....hab darüber nichts gefunden.

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 376
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Fensterposition

Beitrag von Jorg3000 »

Ich weiß nicht, ob es einen Automatismus aus dem Docking-Bereich gibt, damit habe ich noch nicht gearbeitet. Ich würde die Fenster deshalb manuell setzen.
Ich orientiere mich immer am Arbeitsbereich (Screen.WorkAreaRect), weil dann die Task-Leiste berücksichtigt wird und evtl. irgendwelche Office-Leisten links oder rechts o.ä.

Code: Alles auswählen

 
procedure PositioniereFenster(Fenster: TForm; Ecke: Byte);
var
  r: TRect;
begin
  r:= Screen.WorkAreaRect;

  case Ecke of
    0: // oben links
      begin
        Fenster.Left := r.Left;
        Fenster.Top := r.Top;
      end;
    1: // oben rechts
      begin
        Fenster.Left := r.Right - Fenster.Width;
        Fenster.Top := r.Top;
      end;
    2: // unten links
      begin
        Fenster.Left := r.Left;
        Fenster.Top := r.Bottom - Fenster.Height;
      end;
    3: // unten rechts
      begin
        Fenster.Left := r.Right - Fenster.Width;
        Fenster.Top := r.Bottom - Fenster.Height;
      end;
  end;
end;
  
Aufruf z.B.: PositioniereFenster(Form5, 3);

Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Re: Fensterposition

Beitrag von Andy Nightingale »

Danke dir. Werde es probieren. Cool :-)

Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Re: Fensterposition

Beitrag von Andy Nightingale »

Hallo Jorg,
eine Frage noch dazu. Wie kann man denn eine Prozedure bzw. eine Methode irgendwo abspeichern, damit man diese dann für andere Fenster nutzen kann?
Weist du was ich meine?

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 376
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Fensterposition

Beitrag von Jorg3000 »

Moin!
Du kannst eine neue Unit erstellen, in die du solche Prozeduren reinpackst, die nicht speziell zu einem einzelnen Form gehören.
Ich habe z.B. eine Unit namens BasicsUnit angelegt, in die ich nicht-visuelle Funktionen z.B. zum Dateizugriff sammle, und eine Unit BasicsWinUnit, wo ich visuelle Funktionen sammle. Da würde ich die PositioniereFenster() reinkopieren.
Die komplette Prozedur kommt unten in den implementation-Teil, und der Funktionskopf wird oben im interface-Teil wiederholt, damit die Funktion sichtbar wird.

Die neue Unit bindet man in die vorhandenen Units ein, per: uses BasicsWinUnit; - und dann kann man auf die Funktionen der eingebundenen Unit zugreifen.
Grüße, Jörg

Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Re: Fensterposition

Beitrag von Andy Nightingale »

Moin Jorg,
was meinst du mit:
Die komplette Prozedur kommt unten in den implementation-Teil, und der Funktionskopf wird oben im interface-Teil wiederholt, damit die Funktion sichtbar wird.
Entschuldige das ich so nachfrage.- muß mich durch alles erst durcharbeiten. :roll: Danke dir.

Benutzeravatar
theo
Beiträge: 10898
Registriert: Mo 11. Sep 2006, 19:01

Re: Fensterposition

Beitrag von theo »

Andy Nightingale hat geschrieben: Fr 7. Mär 2025, 09:57 Moin Jorg,
was meinst du mit:
Die komplette Prozedur kommt unten in den implementation-Teil, und der Funktionskopf wird oben im interface-Teil wiederholt, damit die Funktion sichtbar wird.
Entschuldige das ich so nachfrage.- muß mich durch alles erst durcharbeiten. :roll: Danke dir.
https://wiki.freepascal.org/Unit#Detailed_unit_example
https://www.marcocantu.com/epascal/Germ ... unitde.htm

Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Re: Fensterposition

Beitrag von Andy Nightingale »

theo hat geschrieben: Fr 7. Mär 2025, 10:31
Andy Nightingale hat geschrieben: Fr 7. Mär 2025, 09:57 Moin Jorg,
was meinst du mit:
Die komplette Prozedur kommt unten in den implementation-Teil, und der Funktionskopf wird oben im interface-Teil wiederholt, damit die Funktion sichtbar wird.
Entschuldige das ich so nachfrage.- muß mich durch alles erst durcharbeiten. :roll: Danke dir.
https://wiki.freepascal.org/Unit#Detailed_unit_example
https://www.marcocantu.com/epascal/Germ ... unitde.htm
Danke aber das beantwortet nicht meine Frage....was bedeutet das: der Funktionskopf wird oben im interface-Teil wiederholt verstehe ich da was falsch?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1648
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Fensterposition

Beitrag von fliegermichl »

Code: Alles auswählen

unit unit1;
interface
 procedure foo(Param1 : integer); // <- Das ist der Funktionskopf
 
implementation
 procedure foo(Param1 : integer); // <- Das ist die Wiederholung im Implementation Teil
 begin
  ...
 end;
 
end.

Andy Nightingale
Beiträge: 248
Registriert: Mo 13. Jan 2025, 12:11

Re: Fensterposition

Beitrag von Andy Nightingale »

fliegermichl hat geschrieben: Fr 7. Mär 2025, 13:11

Code: Alles auswählen

unit unit1;
interface
 procedure foo(Param1 : integer); // <- Das ist der Funktionskopf
 
implementation
 procedure foo(Param1 : integer); // <- Das ist die Wiederholung im Implementation Teil
 begin
  ...
 end;
 
end.
Hallo Fliegermichl,
super .- jetzt hab ichs kapiert. Danke sehr.
Am Anfang steht man oft aufm Schlauch und das was so Profis wie euch im Grunde schon in Fleisch und Blut übergegangen ist und logisch ist, ist für einen Anfänger wie eine große Hürde. Man steht wie vor einer Mauer und denkt:...hää was meint er denn damit. Bin ich völlig verblödet.- und die Stunden vergehen und man probiert und macht und kommt wegen der einen Hürde nicht voran.
Dann traut man sich auch nicht mehr etwas zu schreiben, da man denkt:...vielleicht denken die das du blöd bist. So nach dem Motto:...er soll doch erstmal die Doku durchlesen. Aber das macht man alles, aber es fehlt im Grunde noch am Verständnis der Dinge. Ich hoffe nicht das ich euch nerve wenn ich die nächsten Monate mich häufiger melde. Danke allen. Grüße

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6824
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Fensterposition

Beitrag von af0815 »

Im Interfaceteil wird deklariert, was ausserhalb der Unit sichtbar ist.

Bei Objekten und Klassen wird die Sichtbarkeit über Modifizierer wie private, protected, public und published eingestellt. Wobei die verschiedenen Keyworte unterschiedliche Auswirkungen haben.

Kurz gefasst:
private - nur innerhalb der Unit sichtbar, auch nicht bei Kindern.
protected - innerhalb des Objektes und den Kindern sichtbar
public - allgemein sichtbar
published - allgemein sichtbar und streambar (mit den richtigen Elternklasse)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1648
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Fensterposition

Beitrag von fliegermichl »

Ich hab mir vor fast 40 Jahren das programmieren auch selbst beigebracht.
Am besten ist es wahrscheinlich, wenn Du dir ein gutes Buch zu dem Thema kaufst.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 594
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Fensterposition

Beitrag von Niesi »

fliegermichl hat geschrieben: Fr 7. Mär 2025, 15:04 Ich hab mir vor fast 40 Jahren das programmieren auch selbst beigebracht.
Am besten ist es wahrscheinlich, wenn Du dir ein gutes Buch zu dem Thema kaufst.
Oh, es gibt wieder gute Bücher über Pascal / ObjectPascal zu kaufen?

Ich denke: Eher nicht.

Vielleicht hilft dieses:

https://master.dl.sourceforge.net/proje ... df?viasf=1

Edit: Hier ist auch was auffindbar:

https://www.linuxlinks.com/excellent-fr ... rn-pascal/
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Antworten