Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Position von Programmfenster in *.ini speichern? (https://www.delphipraxis.net/10216-position-von-programmfenster-%2A-ini-speichern.html)

Tom 14. Okt 2003 10:41

Re: Position von Programmfenster in *.ini speichern?
 
Prima. Dann Zeige dem Volk mal Deine überarbeitete Version, die INI auszulesen und zu speichern. Bitte aber vergewissern, dass die INI geschrieben und gefunden wird.

Tim.exe 14. Okt 2003 10:49

Re: Position von Programmfenster in *.ini speichern?
 
OK, haltet euch fest, hier kommt es:

Delphi-Quellcode:
...
const
  SectionSystem         = 'System';
  KeyFormLeft           = 'FormLeft';
  KeyFormTop            = 'FormTop';
...

procedure TForm1.FormCreate(Sender: TObject);
begin
        Form1.Left := 100;
        Form1.Top := 100;
end;


procedure TForm1.FormDestroy(Sender: TObject);
var savestat: TIniFile;
begin
savestat := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini');
try
savestat.WriteInteger(SectionSystem, KeyFormLeft, Form1.Left);
savestat.WriteInteger(SectionSystem, KeyFormTop, Form1.Top);
finally
savestat.Free;
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
var savestat: TIniFile;
begin
savestat := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini');
try
Form1.Left:= savestat.ReadInteger(SectionSystem, KeyFormLeft, 0);
Form1.Top:= savestat.ReadInteger(SectionSystem, KeyFormTop, 0);
finally
savestat.Free;
end;
end;

Tom 14. Okt 2003 10:54

Re: Position von Programmfenster in *.ini speichern?
 
Wieso jetzt OnActivate? OnCreatewar doch richtig. Ansonsten: Wird die verdammte INI-Datei geschrieben? Hat diese den richtigen Inhalt? Setze doch mal ein Breakpoint und schaue nach was passiert.

Nachtrag: Was soll jetzt die Zuweisung in OnCreate?

Tim.exe 14. Okt 2003 11:07

Re: Position von Programmfenster in *.ini speichern?
 
Upsi,

das mit OnCreate und OnActivate war ein Missverständnis.

Es klappt jetzt sehr gut, bis auf einen kleinen Schönheitsfehler:

Beim aller ersten Start (wenn noch keine *.ini geschrieben wurde) wird das Programm am absoluten linken, oberen Bildschirmrand angezeigt, DesktopCenter wäre aber schöner... :roll:

Lonki 14. Okt 2003 11:11

Re: Position von Programmfenster in *.ini speichern?
 
Versuchs doch mal mit:

Delphi-Quellcode:
  if savestat.SectionExists(SectionSystem) then
  begin
    Form1.Left:= savestat.ReadInteger(SectionSystem, KeyFormLeft, 0);
    Form1.Top:= savestat.ReadInteger(SectionSystem, KeyFormTop, 0);
  end;

Christian Seehase 14. Okt 2003 11:12

Re: Position von Programmfenster in *.ini speichern?
 
Moin Tim,

logisch, dass dann das Programmfenster in der linken oberen Ecke hängt.
Du hast ja als Defaultwert beim ReadInteger 0 angegeben.

Wenn Du das mal auf

(Screen.Width-self.Width) div 2

änderst (für die obere Kante entsprechend) sollte das Formular in der Mitte erscheinen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 2 von 2     12   

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