meine zweite versuch eine Tstringlist anzuzeigen und den Inhalt markieren zu können ist auch nicht so einfach ! weil ich es einfach nicht hin bekomme das ich aus der Mauszeiger Position den richtigen Index für die TStringList ausrechnen kann ! hier ist mein kompletter Code:
Code: Alles auswählen
function TMyMemo.SetSelItem(mx,my,ex,ey:Integer):TPoint;
var
fx,fy,fz,fzy,i1,sx1,sx2,t:Integer;
str:String;
s:Boolean;
r:TRect;
mTest:integer;
begin
fz:=0; i1:=0; sx1:=0; sx2:=0; fzy:=0; t:=0;
fy:=0;
s:=False;
mtest:=my;
{ for fy:=0 to TextView.count-1 do begin
str:=TextView.Strings[fy];
fzy:=fzy + Buffer.Canvas.TextHeight(str[1]);
r.left:=0; r.Right:=Width;
r.top:=fzy;
r.Bottom:=r.top+(Buffer.Canvas.TextHeight(str[1])+3);
// if my-r.Bottom <=3 then
// r.Bottom:=r.Bottom+(my-r.Bottom) ;
if r.Bottom-my >= 0 then
t:=r.Bottom-my
else
t:=my-r.Bottom;
Screen.Forms[0].caption:=IntTostr(my) + '\' + IntTostr(r.Bottom) + '\' + intTostr(t) + '\' + IntTostr(Buffer.Canvas.TextHeight(str[1]));
if t <= Buffer.Canvas.TextHeight(str[1]) then
r.Bottom:=r.Bottom+(t);
ShowMEssage('OK');
if PtInRect(r,point(mx,my)) then begin
i1:=fy;
break;
end;
end;}
i1:=((my div Buffer.Canvas.TextHeight('A')) * Buffer.Canvas.TextHeight('A'));
i1:=i1 div Buffer.Canvas.TextHeight('A');
i1:=i1;
// Screen.Forms[0].caption:=IntTostr(r.left) + '\' + intTostr(r.top) + '\' + intTostr(r.Right) + '\' + IntTostr(r.Bottom) + '|' + Inttostr(mx) + '\' + IntTostr(my);
// if odd(i1) = true then
// i1:=i1-3;
Screen.Forms[0].caption:=IntTostr(i1) + '\' + IntTostr(my);
//TextView.strings[i1];
// if fzy-10 >= my then begin
{ for fx:=1 to Length(str) do begin
fz:=fz + Buffer.Canvas.TextWidth(str[fx]);
if (fz >=mx) and (s = false) then begin
s:=True;
sx1:=fx;
fz:=0;
end;
if fz >=Width then begin
fz:=0;
continue;
end;
if s = true then begin
if fz >=ex then begin
sx2:=fx;
s:=False;
Screen.Forms[0].caption:=copy(str,sx1,(sx2+1)-sx1);
exit;
end;
end;
end;
// end; }
end;
// und gezeichnet wird es so
Code: Alles auswählen
procedure TMyMemo.Paint;
begin
Buffer.Canvas.TextRect(Rect(0,0,Width,Height),0,0,TextView.Text);
// Der cuser wird gezeichnet
// buffer.canvas.pen.color:=clred;
// buffer.canvas.moveto(ct.x,zi );
// buffer.canvas.LineTo(ct.x,zi+15);
// Paintbox1.Canvas.CopyRect(TextRect,buffer.canvas,TextRect)
inherited Paint;
Canvas.Draw(0,0,buffer)
end;
so das Problem ist jetzt das der wert bei i1 nicht zur TStringlist passt ! und ich weiß nicht wie ich das in den griff bekommen könnte !
PS:
mein erster Beitrag mit Rechtschreibprüfung !
schön währe eine Strg+Leertasten Funktion für falsch geschrieben Wörter das währe praktisch !
und was im bbcode drin steht sollt er einfach auslassen aber sonst nicht schlecht !
mal schauen ob ich mich damit anfreunden kann !