Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamische Stringlisten (https://www.delphipraxis.net/104674-dynamische-stringlisten.html)

Julian W. 8. Dez 2007 18:36


Dynamische Stringlisten
 
Hallo!
Ich bin gerade dabei einen kleinen Netzwerkchat zu Programmieren. Funktioniert auch soweit ganz prima, ich möchte allerdings auch einen Privatchat einbauen also p2p. Dafür benutze ich Tabs und muss für jeden neuen Tab auch irgendwie eine eigene Stringlist und einen String für den Usernamen erzeugen. Wie sollte ich das am Besten anstellen? Ich habe mich schon informiert und habe herrausgefunden, dass es in etwa so aussehen muss:
Delphi-Quellcode:
type
  TMeineKlasse class(TComponent)
    x : Integer;
  end;
...
var
  MeineKlasse : TMeineKlasse;
begin
...
  MeineKlasse := TMeineKlasse.Create(nil);
...
end;
und ich dann mit einer Tlist die Zeiger verwalten muss. Nur komme ich damit überhaupt nicht klar.. Ich weiß nicht wie ich mir das mit der TList vorstellen muss und auch immernoch nicht, wie ich die Klasse dann dynamisch erzeuge.. Ich hoffe ich habe mein Problem einigermaßen verständlich geschildert und mir kann jemand helfen :snowball:
Mfg Julian

Muetze1 8. Dez 2007 23:26

Re: Dynamische Stringlisten
 
Wie wäre es denn, wenn du dir eine Frame zusammenbaust und diese hält dann die Stringlist etc. Dann haste soweit alles fertig programmiert, die Komponenten auf jedem Tab sind auch schon fertig programmiert. Du musst halt nur für jeden neuen Tab einmalig eine Frame instanziieren und auf den neuen Tab legen.

Julian W. 9. Dez 2007 14:15

Re: Dynamische Stringlisten
 
Mhm, da habe ich noch garnicht drüber nachgedacht... Trotzdem würd ichs gerne erst einmal anders probieren, da ich solche probleme schon öfters hatte und mir dann immer mit irgendwelchen workarounds geholfen habe... Trotzdem vielen vielen Dank für deine schnelle Antwort!!
LG Julian

deep_thought 9. Dez 2007 20:31

Re: Dynamische Stringlisten
 
ansonsten einfach so:
Delphi-Quellcode:
var chatlisten: array of TStringlist;

...

stelength(chatlisten,length(chatlisten)+1);
chatlisten[length(chatlisten)-1]:= TStringlist.create(self);

...

for i:=0 to length(chatlisten)-1 do
 chatlisten[i].free;
setlength(chatlisten,0);
... also ich hoffe, das klar ist, wie's gemeint ist ... irgendwo musste dir halt noch merken, welcher chat zu welcher stringlist gehört ...

mfg deep_thought

guidok 10. Dez 2007 06:43

Re: Dynamische Stringlisten
 
Zitat:

... irgendwo musste dir halt noch merken, welcher chat zu welcher stringlist gehört ...
oder du ergänzt den vorstehenden Code

Delphi-Quellcode:
type
  TChatliste = record
    Username: String;
    Liste: TStringList;
  end;

  TChatlisten: array of TChatliste;

var
  Chatlisten: TChatlisten;
...
  SetLength(Chatlisten, DieAnzahl); //Anzahl der Chatlisten, wie schon im Beitrag oben
  Chatlisten[i].Username := 'Ein Name'; //Der Name des Chatpartners
  Chatlisten[i].Liste := TStringlist.Create; //Erzeugen der Stringliste
Das ist jetzt eine einfache Variante. Du kannst das natürlich alles in eine Klasse verpacken und die passenden Methoden zum Anfügen, Auslesen, Löschen, Suchen usw. der einzelnen Chats mit einbauen.

Muetze1 10. Dez 2007 08:35

Re: Dynamische Stringlisten
 
Warum merkst du dir nicht die Tabsheet Instanz in dem Record? Damit ist die Zuordnung leichter.

Aber grundsätzlich finde ich es ein schlechter Ansatz:

a) Verwendung eines dynamischen Arrays
b) Keine 1:1 Zuordnung der Userdaten zu dem TabSheet

Mit einer Frame wäre dies nicht passiert...

Julian W. 14. Dez 2007 17:28

Re: Dynamische Stringlisten
 
Vielen vielen Dank für eure Antworten!!
Habe es umgesetzt, wie es guidok vorgeschlagen hat und es klappt alles prima!! Vielen Dank nochmal! Weiß jemand zufällig, wie man Tabs hervorheben kann? ALso einfach einen Tab in einer anderen Farbe oder sogar einen Tab blinken lassen? Ist jetzt nicht soo wichtig, aber wenn es jemand weiß wäre eine Antwort schön!

Viele liebe Grüße und happy x-mas schonmal :angel:
Julian
:cat:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.

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