Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Savedialog - ComboxenIndex speichern (https://www.delphipraxis.net/151301-savedialog-comboxenindex-speichern.html)

snears 11. Mai 2010 20:59


Savedialog - ComboxenIndex speichern
 
Guten Abend Delphi Freunde,

ich habe mal eine Frage und zwar kann mir jemand sagen wie man einen Speicher- und LadenButton programmiert!

Und zwar will ich mehrere Comboboxen und deren Index speichern. Alle Comboboxen sind auf einem Formular, aber in einem Panel.

Ich habe mir schon einmal ein Delphi Code angeguckt und bei diesem Programm hat er jeden einzelnen Combobox.Index gespeichert,
kann man das auch mit einem Speicherbefehl machen, oder soll ich jede einzelne Combobox ansprechen und sagen speichere den Wert in einer Text datei.




Vielen Dank

snears

rollstuhlfahrer 11. Mai 2010 21:07

Re: Savedialog - ComboxenIndex speichern
 
HI,

mit Hilfe des Speichern-Dialoges gibst du dem Nutzer die Möglichkeit, einen Dateinamen anzugeben. Intern solltest du diesen dann auch benutzen.

Wie speichere ich die Indizes der Comboboxen? - Simple Dateioperationen, siehe Tutorial über Dateien.
Delphi-Quellcode:
var f: textfile;
begin
  AssignFile(f, FILENAME);
  Rewrite(f);
  WriteLn(ComboBox1.ItemIndex);
  WriteLn(ComboBox2.ItemIndex);
  WriteLn(ComboBox3.ItemIndex);
  WriteLn(ComboBox4.ItemIndex);
  WriteLn(ComboBox5.ItemIndex);
  CloseFile(f);
end;
Bernhard

PS: Danke dem Mod für die Korrektur, sollte doch besser den Tag beenden.

PPS: Hab noch einen Link für eine alterative Version besorgt: INI-Dateien

snears 12. Mai 2010 15:34

Re: Savedialog - ComboxenIndex speichern
 
Vielen Dank für die schnelle Antwort!

Das funktioniert auch soweit, nur kann ich auch sagen speichere das ganze Programm mit den Indizien ab. :coder2: :coder2: :gruebel: :gruebel:

Oder muss ich das so machen wie es oben steht?

Trotzdem schon einmal Vielen Dank :wink: :wink: :hello: :hello:

rollstuhlfahrer 12. Mai 2010 15:48

Re: Savedialog - ComboxenIndex speichern
 
Zitat:

Zitat von snears
Vielen Dank für die schnelle Antwort!

Das funktioniert auch soweit,

Danke.

snears hat ungefähr folgendes geschrieben:
nur kann ich auch sagen "speichere das ganze Programm mit den Indizien ab"?

Oder muss ich das so machen wie es oben steht?

Ich verstehe deine Frage nicht. Was willst du machen? Von hier aus sehe ich nicht, was du bis jetzt hast. :glaskugel: Ich würde dir allerdings gerne helfen. Also was ist deine Frage?
1.) Willst du wissen, wie man mehr als die 6 angegebenen Indizes abspeichert?
2.) Willst du wissen, wie das Programm das automatisch und zeitgesteuert machen soll?
3.) Willst du wissen, wie man die dann auch wieder lädt?
4.) Willst du wissen, wie man das so macht, dass das Programm beim Beenden automatisch speichert?
ODER 5.) Willst du wissen, wie man diese Routine aufspaltet in "Speichern" und "Speichern unter" wie bei anderen Produkten von MS?

Bernhard

fatalerror 12. Mai 2010 18:47

Re: Savedialog - ComboxenIndex speichern
 
Zitat:

Zitat von snears
...
Oder muss ich das so machen wie es oben steht?

Viele Wege führen zu einem Ziel. Nur, wenn du uns das Ziel nicht genau bekannt gibst, können wir dir auch nur schlecht den Weg dazu zeigen.
Eine Alternative ist die Inidatei. Hier ein anderes Beispiel:

1. Erzeuge eine Inidatei
2. Durchlaufe alle Controls und überprüfe ob es eine Combobox ist
3. Schreibe den Namen des gefundenen Controls und den Index in die Inidatei
4. Schliesse die Inidatei
Delphi-Quellcode:
var
  i: Integer;
  ini: TIniFile;

begin
  ini:=TIniFile.create(deindateiname);
  Try
  for i:= 0 to ComponentCount -1 do
  begin
    if Components[i] is TComboBox then
       Ini.WriteInteger('Settings',Components[i].Name, TComboBox(Components[i]).itemindex);
  end;
 
  finally
    ini.Free;
  end;
end;

snears 13. Mai 2010 09:24

Re: Savedialog - ComboxenIndex speichern
 
Also mir hat Bernhard geschrieben, das man mit

WritLn(Combobox1.Itemindex);
WritLn(Combobox2.Itemindex);
WritLn(Combobox3.Itemindex);

jede Combobox ansprechen muss um den Indexwert zu speichern! Soweit alles klar?

So da ich aber an die 60 Comboboxen besitze und nicht einen endlos langen Delphi-Code haben möchte, ist meine Frage nun folgende (aufpassen :P )


Kann man das Projekt oder Programm mit seinen ganzen Comboboxen und deren Indiezen speichern, ohne das man sagt in combobox1 ist folgender wert und speichere den bitte ab.
Habt ihr es jetzt verstanden, ich bin ganz schlecht im Fragen stellen fällt mir mal so auf! :wall: :wall: :wall:

Vielen Dank snears

haentschman 13. Mai 2010 09:43

Re: Savedialog - ComboxenIndex speichern
 
Guten Morgen... :hi:

die Antwort liegt in Beitrag #5 :zwinker:

himitsu 13. Mai 2010 09:45

Re: Savedialog - ComboxenIndex speichern
 
Zitat:

Zitat von snears
und nicht einen endlos langen Delphi-Code haben möchte, ist meine Frage nun folgende (aufpassen :P )

Na erstmal gibt es Delphi-Referenz durchsuchenFindComponent

und dann gäbe es noch (aufpassen :P ) das, welches fatalerror in Beitrag #5 schon schrieb.

fatalerror 13. Mai 2010 09:45

Re: Savedialog - ComboxenIndex speichern
 
Zitat:

Zitat von snears
..
So da ich aber an die 60 Comboboxen besitze und nicht einen endlos langen Delphi-Code haben möchte, ist meine Frage nun folgende (aufpassen :P )

Kann man das Projekt oder Programm mit seinen ganzen Comboboxen und deren Indiezen speichern, ohne das man sagt in combobox1 ist folgender wert und speichere den bitte ab ..

hast du mein Posting mal angeschaut? da hab ich dir doch einen Hinweis darauf gegeben! Durchlaufe mit einer Schleife alle Controls und speichere den Wert ab
Delphi-Quellcode:
for i:= 0 to ComponentCount -1 do
  begin
    if Components[i] is TComboBox then
      // tue hier irgendwas
  end;
ob du jetzt die Daten in einer Inidatei oder einer sonstigen Datei abspeicherst ist dir überlassen.

himitsu 13. Mai 2010 09:51

Re: Savedialog - ComboxenIndex speichern
 
Zitat:

Und zwar will ich mehrere Comboboxen und deren Index speichern. Alle Comboboxen sind auf einem Formular, aber in einem Panel.
Es stellt sich grade noch eine Frage:

Alleine 60 ComboBoxen und wer weiß was sonst noch ... sicher daß man dieses nicht besser lösen könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:21 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