AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Fenster ??

Ein Thema von goose33 · begonnen am 29. Okt 2004 · letzter Beitrag vom 31. Okt 2004
Antwort Antwort
goose33

Registriert seit: 26. Okt 2004
Ort: Merseburg
49 Beiträge
 
#1

Mehrere Fenster ??

  Alt 29. Okt 2004, 20:52
Hallöchen,

kleines ( grosses ) Problem :

So ähnlich wie ICQ & Co erstell eich in meinem Programm mehrere Fenster , und zwar so :

Delphi-Quellcode:
   with TMsgForm.Create(NIL) do begin
      Caption:=Nick;
      lblUIN.Caption:=UIN;
      reTemp.Text:=Msg;
        reHist.Lines.Add('');
        reHist.Lines.Delete(reHist.Lines.Count-1);
        for z:=0 to reTemp.Lines.Count-1 do begin
          reHist.Lines.Add(reTemp.Lines.Strings[z]);
        end;
      reTemp.Lines.Clear;
      Show;
   end;
MsgForm is ne Unit mit nem Formular drin die von der MainUnit aufegrufen wird.
Die re* sind RichEdit's.
Msg ist der Text der darin dargestellt werden soll, der wird in der MainUnit empfangen.
So wie der Code oben ist funktioniert das. Das Fenster geht auf und die Msg steht im RichEdit.

Problem ist folgendes:

Wie fülle ich das RichEdit eines Fensters was es schon gibt ???
Da müsste dann die Nachricht ( Msg ) angehangen werden.
Nun weiss ich aber nicht wie ich auf das RichEdit eines schon offenen Fensters zugreifen kann ?

Habt Ihr da vielleicht einen Plan ?
Dank Euch schon mal
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mehrere Fenster ??

  Alt 29. Okt 2004, 21:59
du musst dir einfach nur die bereits geöffneten Fenster merken (zum Beispiel in einer TList) und beim schließen des Fensters diese wieder aus der Liste entfernen.
Delphi-Quellcode:
fListe: TList;
[...]
var LForm: TMsgForm;
begin
  LForm := TMsgForm.Create(NIL);
  with LForm do begin
     Caption:=Nick;
     lblUIN.Caption:=UIN;
     reTemp.Text:=Msg;
       reHist.Lines.Add('');
       reHist.Lines.Delete(reHist.Lines.Count-1);
       for z:=0 to reTemp.Lines.Count-1 do begin
         reHist.Lines.Add(reTemp.Lines.Strings[z]);
       end;
     reTemp.Lines.Clear;
     Show;
  end;
  fListe.Add(LForm);
end;
zugreifen auf das Form kann man später mit:
TMsgForm(fListe.Items[Index]).reHist.Lines.Add(NeueNachricht);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
goose33

Registriert seit: 26. Okt 2004
Ort: Merseburg
49 Beiträge
 
#3

Re: Mehrere Fenster ??

  Alt 31. Okt 2004, 05:57
Hallöchen,

danke für die Antwort und sorry das ich mich jetzt erst melde !
Ich hatte ein bischen vie um die Ohren.

In den nächsten Tagen werd ich das ausprobieren und mich dann noch mal melden....

Also danke erst mal..

Ahm..noch was...wie bekomm ich die Form wieder aus der liste ?
Geht das einfach mit Delete oder so oder muss ich die danach auch wieder sortieren, damit nix leeres übrig bleibt wie bei einem Record in einer datei ?

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Mehrere Fenster ??

  Alt 31. Okt 2004, 06:08
Zitat von goose33:
....Geht das einfach mit Delete oder so oder muss ich die danach auch wieder sortieren, damit nix leeres übrig bleibt wie bei einem Record in einer datei ?....
Hai Matthias,
aus der Liste bekommst Du den Eintrag mit [b].Delete[b]. ABER Du musst vorher dein Objekt wieder freigeben. Darum kümmert sich die TList nicht. Diese ist einfach nur eine Liste mit Pointern.
Das ganze sähe dann z.B. so aus:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  flist : TList;
  myLabel : TLabel;
begin
  flist := TList.Create; // Liste erzeugen
  myLabel := TLabel.Create(self); // Label erzeugen
// [...]
  flist.Add(myLabel); // In die Liste eintragen;
  TLabel(flist.Items[0]).Free; // Label freigeben
  flist.Delete(0); // Aus der Liste löschen
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
goose33

Registriert seit: 26. Okt 2004
Ort: Merseburg
49 Beiträge
 
#5

Re: Mehrere Fenster ??

  Alt 31. Okt 2004, 06:18
Hallöchen,

also da ist doch tatsächlich noch einer um diese Zeit am Proggen

Also ganz ehrlich ... wirklich verstanden hab ich das jetzt nicht.
Ich hab das jetzt nur so überflogen, aber .... ->

Also mal angenommen ein Fenster ist auf ( gespeichert in der List List.add(form) )
Buton2Click ist mal das Close Ereignis.

Dann erstelleich erst wieder eine Liste, mach da einen Label dazu( Frage was und zu was der ist ?? ) Und dann lösch ich den wieder ???

Ich versteh nur Bahnhof .. sorry


Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Mehrere Fenster ??

  Alt 31. Okt 2004, 06:29
Zitat von goose33:
... mach da einen Label dazu(...
Uff...

Nein, das war doch nur ein Beispiel. In deinem Fall musst Du, bevor Du den Eintrag aus der Liste löschst das Fenster erst wieder freigeben (aus dem Speicher entfernen). Dies darfst Du natürlich nicht machen wenn das Fenster noch aktiv ist sondern musst es in dein MainForm machen. Dor würde dann dieser Code aufgerufen um ein Fenster aus der Liste zu löschen
Delphi-Quellcode:
.
.
  TMsgForm(fListe.Items[Index]).Free;
  fListe.Delete(Index);
.
.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 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