Announcement

Collapse
No announcement yet.

Chatdlg.Memo1.Lines.Add(S) funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Chatdlg.Memo1.Lines.Add(S) funktioniert nicht

    Hi!

    Ich habe folgendes Problem:
    Ich habe da so eine Client/Server Anwendung und werte mit dem Server-Programm die einkommenden Strings aus:

    S:='(12)Hallo!'

    if Copy(S,2,2)='12' then
    begin
    if Chatdlg.Formstate<>[fsShowing] then
    Chatdlg.ShowModal;
    Chatdlg.Memo1.Lines.Add(S);
    end;

    Doch wenn ich das Prog. anstarte und es den String empfängt, dann
    öffnet sich zwar der Dialog, aber der String, den ich schicke wird nicht angezeigt!!??

    Was muss ich tun????

  • #2
    <p>Hallo,<br>
    <br>
    der String wird schon eingefügt, aber erst nachdem der Dialog wieder geschlossen wurde. Du musst "Chatdlg.Memo1.Lines.Add(S);" vor "ShowModal" ausführen.<br>
    <br>
    Gruß Thomas</p&gt

    Comment


    • #3
      Danke Thomas!!!

      Ein Problem: Es werden aber mehrere Strings, nachdem der Dialog geöffnet wurde, an Chatdlg.Memo1 geschickt, aber sie werden nicht angezeigt!!!! Ich schätze ich muss das Memo im Dialog irgendwie updaten!! Aber wie???

      Memo1.Update; -> geht nicht!
      Memo1.Repaint -> geht nicht!

      Wie kann ich also an das Memo im Dialog Strings schicken, die dann angezeigt werden???

      Bitte um Rückmeldung!!!

      DANKE DANKE DANKE im voraus!!

      mfg
      MIK

      Comment


      • #4
        Hi,

        Zur Verdeutlichung:
        Ich schicke von einer anderen Client-Anwendung einen String,
        der dann von der Server-Anwendung in einem Chatfenster angezeigt werden soll!!! Doch das funzt nicht!!!

        Hier der Source:
        <p>
        unit Main_Unit;<br>

        interface<br>

        uses<br>
        Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
        ScktComp, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, TStringFunctions;<br>

        type<br>
        TServerF = class(TForm)<br>
        Button1: TButton;<br>
        Server: TIdTCPServer;<br>
        Status: TMemo;<br>
        procedure Button1Click(Sender: TObject);<br>
        procedure FormCreate(Sender: TObject);<br>
        procedure ServerStatus(axSender: TObject; const axStatus:<br> TIdStatus;<br>
        const asStatusText: String);<br>
        procedure ServerConnect(AThread: TIdPeerThread);<br>
        procedure ServerDisconnect(AThread: TIdPeerThread);<br>
        procedure ServerExecute(AThread: TIdPeerThread);<br>
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        private<br>
        public<br>
        { Public-Deklarationen }<br>
        geht: Boolean;<br>
        ChatMsg: String;<br>
        end;<br>

        var<br>
        ServerF: TServerF;<br>
        SF: TStringFunction;<br>
        weiter,Bool: Boolean;<br>

        implementation<br>

        uses Chatdlg_Unit;<br>

        {$R *.DFM}<br>

        procedure TServerF.Button1Click(Sender: TObject);<br>
        begin<br>
        weiter:=not weiter;<br>
        if weiter=true then<br>
        begin<br>
        try<br>
        Server.DefaultPort:=1462;<br>
        Server.Active:=true;<br>
        finally<br>
        Button1.Caption:='&Disconnect...';<br>
        Status.Lines.Add('Server: Opened!');<br>
        end;<br>
        end;<br>
        if weiter=false then<br>
        begin<br>
        try<br>
        Server.DefaultPort:=1462;<br>
        Server.Active:=false;<br>
        finally<br>
        Button1.Caption:='Open &Clientconnection...';<br>
        Status.Lines.Add('Server: Closed!');<br>
        end;<br>
        end;<br>
        end;<br>

        procedure TServerF.FormCreate(Sender: TObject);<br>
        begin<br>
        weiter:=false;<br>
        geht:=true;<br>
        Bool:=false;<br>
        end;<br>

        procedure TServerF.ServerStatus(axSender: TObject; const axStatus: TIdStatus;<br>
        const asStatusText: String);<br>
        begin<br>
        Status.Lines.Add('Server: '+asStatusText);<br>
        end;<br>

        procedure TServerF.ServerConnect(AThread: TIdPeerThread);<br>
        begin<br>
        Status.Lines.Add('Server: Connected to Client!');<br>
        end;<br>

        procedure TServerF.ServerDisconnect(AThread: TIdPeerThread);<br>
        begin<br>
        Status.Lines.Add('Server: Disconnected from Client!');<br>
        end;<br>

        procedure TServerF.ServerExecute(AThread: TIdPeerThread);<br>
        var<br>
        S, Msg, ChatMsg, Titel, Icon, Buttons: string;<br>
        FIcon, FButtons: LongInt;<br>
        begin<br>
        S:=AThread.Connection.ReadLn;<br>
        if Copy(S,2,2)='10' then<br>
        begin<br>
        Titel:=SF.Titel(S);<br>
        Msg:=SF.Msg(S);<br>
        Icon:=SF.Icon(S);<br>
        Buttons:=SF.Buttons(S);<br>
        case Icon[1] of<br>
        '0': FIcon:=0;<br>
        '1': FIcon:=MB_ICONQUESTION;<br>
        '2': FIcon:=MB_ICONINFORMATION;<br>
        '3': FIcon:=MB_ICONWARNING;<br>
        '4': FIcon:=MB_ICONERROR;<br>
        end;<br>
        case Buttons[1] of<br>
        '0': FButtons:=MB_OK;<br>
        '1': FButtons:=MB_YESNO;<br>
        '2': FButtons:=MB_YESNOCANCEL;<br>
        '3': FButtons:=MB_OKCANCEL;<br>
        '4': FButtons:=MB_ABORTRETRYIGNORE;<br>
        '5': FButtons:=MB_RETRYCANCEL;<br>
        end;<br>
        MessageBox(0,PChar(Msg),PChar<br>(Titel),FIcon+FBu ttons+MB_SYSTEMMODAL);<br>
        end;<br>
        if Copy(S,2,2)='11' then<br>
        begin<br>
        WinExec(PChar(SF.PT(S)),SW_SHOW);<br>
        end;<br>
        if Copy(S,2,2)='12' then<br>
        begin<br>
        ChatDlg.Memo1.Lines.Add(SF.PT(S));<br>
        if Chatdlg.Visible<>true then<br>
        Chatdlg.ShowModal;<br>
        end;<br>
        end;<br>

        procedure TServerF.FormClose(Sender: TObject; var Action:TCloseAction);<br>
        begin<br>
        if Server.Active=true then<br>
        Server.Active:=false;<br>
        end;<br>

        end.<br>
        </p>

        H E L P ! ! ! ! !

        Bitte um Hilfe!!!!!!

        Comment


        • #5
          Hi Mike,

          kommen die Strings über den Server an, wird der ChatDlg angezeigt?

          Ich habe dein Beispiel mit zwei Forms und einem Timer versucht nachzuvollziehen, aber bei mir wird das Memo ohne Umwege aktualisiert.

          type <br>
          TForm1 = class(TForm)<br>
          Button1: TButton;<br>
          Timer1: TTimer;<br>
          procedure Button1Click(Sender: TObject);<br>
          procedure Timer1Timer(Sender: TObject);<br>
          end;<br>
          <br>
          var<br>
          Form1: TForm1;<br>
          <br>
          implementation<br>
          <br>
          {$R *.DFM}<br>
          <br>
          uses<br>
          Unit2;<br>
          <br>
          procedure TForm1.Button1Click(Sender: TObject);<br>
          begin<br>
          Timer1.Enabled := not Timer1.Enabled;<br>
          end;<br>
          <br>
          procedure TForm1.Timer1Timer(Sender: TObject);<br>
          begin<br>
          Form2.Memo1.Lines.Add('Test');<br>
          if not Form2.Visible then Form2.ShowModal;<br>
          end;<br>
          <br>
          type<br>
          TForm2 = class(TForm)<br>
          Memo1: TMemo;<br>
          Button1: TButton;<br>
          procedure Button1Click(Sender: TObject);<br>
          end;<br>
          <br>
          var<br>
          Form2: TForm2;<br>
          <br>
          implementation<br>
          <br>
          {$R *.DFM}<br>
          <br>
          procedure TForm2.Button1Click(Sender: TObject);<br>
          begin<br>
          ModalResult := mrOK;<br>
          end;<br>
          <br>
          <br>

          Gruß Fal
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Hi Falk!

            Tschuldige bitte für mein spätes Antworten und Danke für dein Bemühen!!!<br>

            Folgendes:<br>

            Zuerst verwendete ich ein TCP/IP Protokoll und überprüfte in der OnExecute-Methode die einkommenden Strings!!!!
            DAS WAR EIN FEHLER!!!!
            Denn diese Methode verwendete einen Thread der durchgehend aktualisiert wird! Ich schrieb die Chatmethode da rein! So konnte das Formular nicht angezeigt werden, weil die Methode dadurch behindert wurde!!!<br>

            Jetzt verwende ich das UDP-Protokoll von Indy(Winshoes 8)!
            Jetzt funktzs, denn da wird der Thread gestoppt, bevor die Chat-Methode aufgerufen wird!!!<br>

            Also, nochmal Danke!!

            Comment

            Working...
            X