AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi mehrfach erstelltes form differenzieren
Thema durchsuchen
Ansicht
Themen-Optionen

mehrfach erstelltes form differenzieren

Offene Frage von "Beckman"
Ein Thema von Beckman · begonnen am 23. Okt 2004 · letzter Beitrag vom 23. Okt 2004
Antwort Antwort
Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#1

mehrfach erstelltes form differenzieren

  Alt 23. Okt 2004, 18:26
ich versuche vergeblich (auch mit hilfe von dem forum hier und g00gle) seit einigen vielen stunden herauszufinden, wie ich ein chatfenster, das ein bestimmtes zur laufzeit erstelltese form ist, wiederfinden soll und wenns noch nicht erstellt wurde, dann nun neu erstellen kann.

ich hab schon ~20 varianten durchprobiert und nix geht.
das ist die letzte version, in der ich die UIN in der caption drin hab und nun die versuche die caption der gefundenen msgforms mit meiner uin zu vergleichen.


Code:
procedure TMainForm.SendMessage1Click(Sender: TObject);
var
  i: Integer;
//  msgwin: TComponent;
begin
SetCapture(Userlist.Handle);
if Userlist.Selected = nil then Exit;
 
for i := 0 to application.ComponentCount-1 do begin
  if application.Components[i] is Tmsgform then begin
    if tmsgform(application.Components[i]).Caption = Userlist.Selected.SubItems[UL_INDEX_NICK] then begin
      tmsgform(application.Components[i]).Memo2.SetFocus;
      end
      else begin
        with TMsgForm.Create(Self) do begin
          FDest := Userlist.Selected.Caption;
          FName := Userlist.Selected.SubItems[UL_INDEX_NICK];
          //Caption := Format('%s (%s)', [Userlist.Selected.SubItems[UL_INDEX_NICK], Userlist.Selected.Caption]);
          Caption := Userlist.Selected.SubItems[UL_INDEX_NICK];
          Show;
          end;
        end;
    end;
  end;
 

schau ob ein solches fenster schon erstellt wurde
wenn ja, dann lass dort weiter schreiben
wenn nicht, dann erstelle neues um dort zu schreiben.

end;


hat endlich wer irgendne funkende loesung?
ich koennt ja HWND vom fenster fuer jeden user speichern und dann so irgenwie, wenn man mir erklaert wie das geht

mit enumchildwindows() weiss ich nix anzufangen
mit findcomponent hat nix gefunkt
und die findwindow methode will ich vermeiden, wobei ichs mit der jetzt probieren werde, es zumindest versuchen werde zu probieren

thanks fuer loesungsvorschlaege.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#2

Re: mehrfach erstelltes form differenzieren

  Alt 23. Okt 2004, 18:50
Ich glaub ungefähr so:

Delphi-Quellcode:
var
  Form2s: array of TForm2;

procedure TForm1.Button1Click(Sender: TObject);
var i: longint;
begin
  i := 1;
  if Length(Form2s) > 0 then
  for i := 0 to Length(Form2s) do
    begin
    if Form2s[i] <> nil then
      begin
      if Form2s[i].Caption = Edit1.Text then
        begin
        Form2s[i].Show;
        break;
        end;
      end;
    end;
  if i = Length(Form2s) + 1 then
    begin
    SetLength(Form2s, Length(Form2s) + 1);
    Form2s[Length(Form2s)] := TForm2.Create(Form1);
    Form2s[Length(Form2s)].Caption := Edit1.Text;
    Form2s[Length(Form2s)].Show;
    end;
end;
Aber beim schließen des Hauptfensters treten lauter Fehler auf! Weiß jemand warum?
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#3

Re: mehrfach erstelltes form differenzieren

  Alt 23. Okt 2004, 18:52
Erstmal würde ich zum beispiel die ganzen Chatfenster in einem Dynamischen Array verwalten. Wenn du dann im Array einen record machst, kannst du auch noch weitere Daten zu einem Form speichern.

Zum Beispiel:
Delphi-Quellcode:
type
  TChatWindowInfo = record
    Form: TForm;
    User: String;
  end;

  ChatWindows : Array of TChatWindowInfo;
Jetzt musst du nur noch vernünftig das Array pflegen, heisst beim erstellen eines Fensters da eintragen und beim Schliessen eines Fenster dort wieder rausschmeissen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#4

Re: mehrfach erstelltes form differenzieren

  Alt 23. Okt 2004, 18:59
cool, die letzte methode klingt super, jetzt schua ich nur mal, wie das mit den arrays funkt, hab se noch nie gebraucht
  Mit Zitat antworten Zitat
Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#5

Re: mehrfach erstelltes form differenzieren

  Alt 23. Okt 2004, 20:15
also, wenn ich jetzt mein HWND vom fenster gespeichert hab

gibts ne funktion, mit der ich sowas machen kann?

fenster(HWND).memo2.text := 'blah';

also, wenn ich den hwnd kenn.
  Mit Zitat antworten Zitat
Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#6

Re: mehrfach erstelltes form differenzieren

  Alt 23. Okt 2004, 21:22
with TForm(Pointer(StrToInt(<saved_string>))) as Tmsgform do begin memo2.text := 'blah'; end;


es funkt!!!

danke an alle helfenden.
  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 19:18 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