Avatar billede picard Nybegynder
16. oktober 2000 - 17:11 Der er 9 kommentarer og
1 løsning

Sende formatteret RichEdit tekst mellem to pc\'ere

Hvordan sender man en formateret tekst i en RichEdit komponent til en anden RichEdit komponent på en anden computer???
Der bruges delphis egne sockets.

Picard
Avatar billede borrisholt Novice
16. oktober 2000 - 17:20 #1
Jeg ville lave en data type som den her :

Type
  TSelction = record
    SelStart, SelLength : Integer;
    SelAttributes: TTextAttributes;
  end;

Så kunne du lave noget kode alla det her :

var
  Selction : TSelction;

procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (key = 67) then
  begin
    Selction.SelStart := RichEdit1.SelStart;
    Selction.SelLength := RichEdit1.SelLength;
    Selction.SelAttributes := RichEdit1.SelAttributes;
  end;

  if (ssCtrl in Shift) and (key = 87) then
  begin
    RichEdit1.SelStart := Selction.SelStart;
    RichEdit1.SelLength := Selction.SelLength;
    RichEdit1.SelAttributes := Selction.SelAttributes;
  end;



end;


jens B
Avatar billede lrj Nybegynder
16. oktober 2000 - 18:40 #2
borrishold - har det noget med at sende data over netværk at gøre? :)
Avatar billede picard Nybegynder
16. oktober 2000 - 18:51 #3
;o)
Avatar billede picard Nybegynder
16. oktober 2000 - 22:42 #4
har fundet ud af det. :O)

1. Man skal lave den tekst man vil sende om til en Tmemorystream. Det gør man på følgende måde: RichEdit.lines.savetostream(memorystream);
2. man skal så bruge clientsocket.socket.sendstream(memorystream) til at sende  streamen over netværket
3. Man skal på serversocket siden modtage memorystramen. Det gør man ved at oprette en ny Tstream, og indlæse værdien af serversocket.socket.receiveBuffer i den.
4. Richediten på serversiden får så indlæst klientens tekst ved at bruge
richedit.lines.loadfromstream(stream)

Man bliver nødt til at streame teksten i richedit komponenten ellers bliver den kun overført som PlainText.

Håber der er andre der kan bruge dette til noget !!! ;)

Hvis der er nogle der vil se koden skal jeg nok lægge den ud !

Christian
Avatar billede sjensen Nybegynder
16. oktober 2000 - 22:45 #5
Kig på Socket komponenten. Hent evt. en bedre version fra Piette\'s ICS komponent samling (find den på delphi super page).

Ved at oprette en klientsokkel på den maskine der skal sende og en serversokkel på den maskine der skal modtage kan du sende alle de data du vil på tværs af et netværk via maskinernes tcp/ip nummer. Herunder også indholdet af et richedit felt.

Du kan også bruge en mindre sikker metode via Windows indbyggede \"mailslot\" funktion. Det er lidt på samme måde som sockets (sokler) men dataene vil blive sendt til alle maskiner i netværket og de maskiner der \"lytter\" kan modtage det.

Selve teksten (hele teksten i richedit komponentet) kan du sende ved at arbejde med richedit1.text propertyen. Den indeholder hele teksten i komponentet som en lang streng. Med formatteringstegn, linieskift og hele dynen.
Avatar billede sjensen Nybegynder
16. oktober 2000 - 22:47 #6
Ups, for sent. Du havde nået at acceptere dit eget svar, men det er jo også fint nok. Dog tror jeg ikke der er nødvendigt med savetostream men som jeg nævner kan du arbejde med hele teksten via TEXT propertyen.
Avatar billede borrisholt Novice
17. oktober 2000 - 08:22 #7
lrj> Det jeg lavede viste hvordan man fangede den formaterede tekst fra en richedit. Så var humlen bare at men skulle sende denne record gennem sin record.

Som en side bemærkning vil jeg lige gøre opmærksom på at det svar picard viser hvordan man dumper HELE indholdet fra en RichEdit ud i nætværket ... Og strengent set blev der ikke spurgt om det ....

Jens B
Avatar billede picard Nybegynder
17. oktober 2000 - 10:06 #8
\"Hvordan sender man en formateret tekst\" - det opfatter jeg som en tekst nogle af ordene/bogstaverne er enten bold, kuriv, undertreget m.v. men dermed ikke sagt at noget af teksten ikke er alm. tekst. ;)

Problemet var jo netop at når teksten blev sendt så blev den kun sendt som plaitext, og dermed gik formateringen af teksten bort. Men OK det fremgik måske ikke helt præcist af spørgsmålet, beklager.

Picard
Avatar billede borrisholt Novice
17. oktober 2000 - 10:11 #9
Picard >> Jeg læste dit spørgsmål som du ønskede kun at flytte det markerede tekse (med formateringer) til det formål skal du så vidt jeg ved bruge en struktur alla den foreskrevende ... !?!?!

Den løsning du angiver flytter HELE indholdet af dit richedit ....

Jens B
Avatar billede picard Nybegynder
17. oktober 2000 - 10:18 #10
borrisholt >> korrekt :) Det er netop pointen at indholdet fra en richedit skal flyttes til en anden over netværket.

Christian
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester