Vær dog opmærksom på at RichEdit-løsningen ødelægger dine muligheder for at markere almindeligt med musen. Jeg ved ikke lige hvad der bedst løser dette problem.
En løsning kan være at registrere ved OnMouseDown hvor markøren er, og hvis den så har flyttet sig for meget ved OnMouseUp, så kan du bare lade være med at markere den aktuelle linje.
procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var LineNumber: Integer; begin if Button = mbLeft then if ABS((EditCursorPos.x - X) + (EditCursorPos.y - y)) < 10 then //Du kan ændre 10 til hvad du har lyst til. Det er det der afgør hvor meget man kan rykke cursoren. begin LineNumber := SendMessage(RichEdit1.Handle, EM_LINEFROMCHAR, RichEdit1.Selstart, 0); RichEdit1.SelStart := SendMessage(RichEdit1.Handle, EM_LINEINDEX, LineNumber, 0); RichEdit1.SelLength := Length(RichEdit1.Lines[LineNumber]); end; end;
procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then EditCursorPos := Point(X, Y); end;
Hvis der ikke er behov for normal markering med musen i dit program, så kan du glemme overstående og bruge den lidt mere simple kode jeg postede tidligere.
Hvis du vil markere hele linjen, så skal du til at tegne tingene selv. Det er vist ikke helt nemt i en TRichEdit/TMemo. Du kan også bruge en tredje komponent som f.eks. SynEdit ( http://synedit.sf.net ). Tak for points :-)
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.