Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie kann ich die Memo.Lines auf ein Cavas zeichnen? (https://www.delphipraxis.net/60870-wie-kann-ich-die-memo-lines-auf-ein-cavas-zeichnen.html)

PeterKiers 13. Jan 2006 11:49


Wie kann ich die Memo.Lines auf ein Cavas zeichnen?
 
Hi,

Wie kann ich die Memo.Lines auf ein Cavas zeichnen?


Code:

const
    CR = #13;
    LF = #10;
var
    Start, Stop : Integer;
begin
    if Memo.Lines.Count = 0 then
        Memo.Lines.Add('');

    Start := 1;
    Stop := Pos(CR, Msg);
    if Stop = 0 then
        Stop := Length(Msg) + 1;
    while Start <= Length(Msg) do begin
        Memo.Lines.Strings[Memo.Lines.Count - 1] :=
            Memo.Lines.Strings[Memo.Lines.Count - 1] +
            Copy(Msg, Start, Stop - Start);
        if Msg[Stop] = CR then begin
            Memo.Lines.Add('');
            SendMessage(Memo.Handle, WM_KEYDOWN, VK_UP, 1);
        end;
        Start := Stop + 1;
        if Start > Length(Msg) then
            Break;
        if Msg[Start] = LF then
           Start := Start + 1;
        Stop := Start;
        while (Msg[Stop] <> CR) and (Stop <= Length(Msg)) do
            Stop := Stop + 1;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.ConnectButtonClick(Sender: TObject);
begin
    TnCnx.Host     := HostEdit.Text;
    TnCnx.Port     := PortEdit.Text;
    TnCnx.TermType := 'VT100';
    TnCnx.LocalEcho := FALSE;
    TnCnx.Connect;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.DisconnectButtonClick(Sender: TObject);
begin
    TnCnx.Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.TnCnxSessionConnected(Sender: TTnCnx; Error: Word);
begin
    if Error <> 0 then begin
        DisplayMemo.Lines.Add('Unable to connect. Error #' + IntToStr(Error));
        Exit;
    end;

    DisplayMemo.Clear;
    InfoLabel.Caption       := 'Connected';
    DisplayMemo.Enabled     := TRUE;
    ConnectButton.Enabled   := FALSE;
    DisconnectButton.Enabled := TRUE;
    ActiveControl           := DisplayMemo;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.TnCnxSessionClosed(Sender: TTnCnx; Error: Word);
begin
    InfoLabel.Caption       := 'Disconnected';
    DisplayMemo.Enabled     := FALSE;
    ConnectButton.Enabled   := TRUE;
    DisconnectButton.Enabled := FALSE;
    ActiveControl           := ConnectButton;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.TnCnxDataAvailable(
    Sender: TTnCnx; Buffer : Pointer; Len: Integer);
begin
    MemoAddLines(DisplayMemo, StrPas(Buffer));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.DisplayMemoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Key := 0;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.DisplayMemoKeyPress(Sender: TObject; var Key: Char);
begin
    TnCnx.Send(@Key, 1);
    if Key = #13 then begin
        { Send a LF after CR key }
        Key := #10;
        TnCnx.Send(@Key, 1);
    end;
    Key := #0;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TTnDemoForm.SendButtonClick(Sender: TObject);
begin
    if TnCnx.State = wsConnected then
        TnCnx.SendStr(DataEdit.Text + #13#10)
    else
    DisplayMemo.Lines.Add('*** NOT CONNECTED ***');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

end.
Gruß

Peter Kiers

sh17 16. Jan 2006 09:11

Re: Wie kann ich die Memo.Lines auf ein Cavas zeichnen?
 
Dein langes Codestück hab ich mal aus Faulheit nicht durchgelesen.

Folgendes fällt mir aber spontan ein:

Ausgeben der ersten Zeile:

Delphi-Quellcode:
TargetCanvas.TextOut(x,y,Memo.Lines[0]);
Oder auch das:

Delphi-Quellcode:
Memo.PaintTo(TargetCanvas.Handle, x,y);

PeterKiers 16. Jan 2006 09:47

Re: Wie kann ich die Memo.Lines auf ein Cavas zeichnen?
 
Danke.

Peter


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