16. oktober 2000 - 17:11Der 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.
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;
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 !
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.
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.
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 ....
\"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 >> 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 ....
borrisholt >> korrekt :) Det er netop pointen at indholdet fra en richedit skal flyttes til en anden over netværket.
Christian
Synes godt om
Ny brugerNybegynder
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.