Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Pagecontrol verschieben und Benutzereinstellungen lesen und speichern (https://www.delphipraxis.net/198176-pagecontrol-verschieben-und-benutzereinstellungen-lesen-und-speichern.html)

v2afrank 10. Okt 2018 14:34

Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Ich habe hier ein Programm bei dem dynamisch in einem Pagecontrol verschiedene Tabs erzeugt werden.
Diese werden nach einem Neustart der Anwendung auch ordentlich wiederhergestellt. Nun kam der Wunsch bei den Usern auf die Reihenfolge der Tabs zu verschieben. Das habe ich auch mit dem Tipp von hier hinbekommen. Nun hänge ich daran die Einstellungen des User zu lesen. Ich bin einfach mal davon ausgegangen nach dem erzeugen des Pagecontrols alle Pages durchzulaufen und den Tabindex zu setzen.Frei nach ddieser Funktion
Delphi-Quellcode:
for n := 0 to PageControl1.PageCount - 1 do
 begin
   PageControl1.Pages[n].Pageindex:=readinteger(…..
 end;
Das Ende vom Lied war aber dass weder die Indizes richtig waren noch der Inhalt. Falls gewünscht mache ich morgen gerne mal ein kleines Beispielprogramm fertig, aber vielleicht hat ja schon so jemand eine Idee wo die Ursache liegt

Hobbycoder 10. Okt 2018 14:38

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Wäre es nicht einfacher erst die Benutzereinstellung zu lesen, und dann gleich in der richtigen Reihenfolge die Tabs zu erstellen?

Sherlock 10. Okt 2018 14:44

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Was Hobbycoder schrieb.

Sherlock

dummzeuch 10. Okt 2018 16:36

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Zitat:

Zitat von v2afrank (Beitrag 1415426)
Ich bin einfach mal davon ausgegangen nach dem erzeugen des Pagecontrols alle Pages durchzulaufen und den Tabindex zu setzen.Frei nach ddieser Funktion
Delphi-Quellcode:
for n := 0 to PageControl1.PageCount - 1 do
 begin
   PageControl1.Pages[n].Pageindex:=readinteger(…..
 end;
Das Ende vom Lied war aber dass weder die Indizes richtig waren noch der Inhalt. Falls gewünscht mache ich morgen gerne mal ein kleines Beispielprogramm fertig, aber vielleicht hat ja schon so jemand eine Idee wo die Ursache liegt

Das kann nicht funktionieren, denn die Indices, auf die Du in der FOR-Schleife zugreifst, ändern sich ja innerhalb der Schleife. Du müsstest Dir die TabControls vorher in ein Array speichern und dann die FOR-Schleife ueber das Array laufen lassen. (und selbst das kann schiefgehen, da das Setzen des Index für einen Tab vermutlich die Indices für die anderen Tabs anpasst).

v2afrank 11. Okt 2018 06:03

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Zitat:

Zitat von Hobbycoder (Beitrag 1415427)
Wäre es nicht einfacher erst die Benutzereinstellung zu lesen, und dann gleich in der richtigen Reihenfolge die Tabs zu erstellen?

Ja wäre es und ist auch wäre auch so umzusetzen, allerdings habe ich zwei feste Pages die von Anfang an dabei sind.

v2afrank 11. Okt 2018 06:43

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe jetzt auch einmal ein kleines Beispiel erstellt und hochgeladen.
Die entscheidende Stelle ist hier:
Delphi-Quellcode:
procedure TForm1.restoreLayout;
var
  ini: TIniFile;
  n: Integer;
  numberOfSheets: Integer;
begin
  ini := TIniFile.Create(extractfilepath(paramstr(0)) + 'Layout.ini');
  numberOfSheets := ini.ReadInteger('Common', 'NumberOfSheets',
    PageControl1.PageCount);
  for n := 1 to numberOfSheets - 2 do//zwei Feste Tabs
  begin
    createSheet;
  end;
  for n := 0 to PageControl1.PageCount do
   PageControl1.Pages[n].PageIndex:=ini.ReadInteger('Order', 'PageControl' + PageControl1.Pages[n].Name,
      PageControl1.Pages[n].PageIndex);
  ini.Free;
end;
Dabei bekomme ich allerdings eine Listenindex überschreitet das Maximum Meldung



Vergesst es. Ist zu früh. Der Index muss natürlich bis PageCount-1 laufen und dann funktioniert es auch wie erwartet. Ich habe ursprünglich immer den Fehler gemacht und bin nicht über den Namen des Sheets gegangen sondern über Pages[n]. Das ist natürlich schwierig. Der Namen ist ja dafür da ein Element eindeutig zu kennzeichnen. Ich hoffe im Anhang ist jetzt die funktionierende Version

Sherlock 11. Okt 2018 08:05

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Deine untere Schleife da sollte nur bis Pagecount-1 gehen.

So gut wie alles ist 0 basiert zu zählen.

Sherlock

v2afrank 11. Okt 2018 08:14

AW: Pagecontrol verschieben und Benutzereinstellungen lesen und speichern
 
Ja absolut richtig. Hatte ich auch in meinem editierten Text geschrieben


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr.

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