Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#2

Re: auf nächsten buchstaben runden ?

  Alt 23. Nov 2006, 18:29
mit folgenden qullcode habe ich den ersten schrit geschaft:
Delphi-Quellcode:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  sx,sy,i:Integer;
  v,v1,v2:TRect;
begin
  if ssLeft in shift then begin
    bufbmp.Canvas.pen:=oldpen;
    bufbmp.Canvas.Brush:=oldBrush;
  
    bufbmp.Canvas.Brush.color:=clBlack;
    bufbmp.Canvas.Brush.Style:=bsSolid;
    bufbmp.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);
    bufbmp.Canvas.Brush:=oldBrush;
    bufbmp.Canvas.Pen:=oldPen;
    bufbmp.Canvas.pen.color:=clAqua;

    for i:=0 to obj.count-1 do begin
      v1.left:=tCharItem(obj.items[i]).cx;
      v1.top:=tCharItem(obj.items[i]).cy;
      v1.Right:=v1.left+bufbmp.Canvas.TextWidth(tCharItem(obj.items[i]).Char);
      v1.Bottom:=v1.top+bufbmp.Canvas.TextHeight(tCharItem(obj.items[i]).Char);


      v2.left:=mx;
      v2.top:=my;
      v2.Right:=x;
      v2.Bottom:=y;

      if IntersectRect(v,v2,v1) = True then begin
// ShowMessage(IntTostr(v1.right) + '\' + IntTostr(x));
// sx:=x+v1.right;
// memo2.lines.add();
       caption:=IntTostr(v1.Right-x) ;
       sx:=x+(v1.Right-x);
// break;
      end;
    end;

    bufbmp.canvas.Rectangle(mx,my,sx,y);
    bufbmp.Canvas.Brush:=oldBrush;
    bufbmp.Canvas.Pen:=oldPen;
    DrawText;

  end;
end;
im moment muss ich noch y und mx und my anpassen aber ich denke das werde ich schaffen !!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat