Добрый вечер.
Исходный текст можете взять из предыдущего сообщения с тем же названием.
Вопрос вот в чем. Как вставить текст как в Peint'e в любое место компонента Image т.е чтобы щелкнуть в нужное место image и ввести текст допустим в edit. За любые ответы спасибо
Если ты хочешь привязываться к Edit, то количество вводимых участков текста или надо ограничивать, или извращаться с новыми Edit'ами.
вот что у меня получилось.
гадость. работает, но так, что лучше бы не работало.
подумаю, как это сделать по-человечески.
var X1,Y1: integer;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
X1:=X;
Y1:=Y;
end;
procedure TForm1.FormCreate(Sender: TObject); //чтобы мерцания не было
begin
DoubleBuffered:=true;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Image1.Canvas.TextOut(X1,Y1,Key);
inc(X1,7);
end;
vadim(b),
положи на форму TEdit, и попробуй вот это:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.Top := y + Image1.Top;
Edit1.Left := x + Image1.Left;
Edit1.Text := '';
Edit1.Visible := true;
Edit1.SetFocus;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=true;
Edit1.Visible := false;
Image1.Canvas.Brush.Style := bsSolid; // Это можно и не делать...
Image1.Canvas.Brush.Color := clWhite; // ...
Image1.Canvas.FillRect(Image1.Canvas.ClipRect); // ...
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
x1, y1: integer;
s: string;
begin
if key = #13 then begin
x1 := edit1.Left;
y1 := edit1.Top;
s := Edit1.Text;
Image1.Canvas.TextOut(X1,Y1,s);
Edit1.Visible := False;
edit1.Left := 0;
edit1.Top := 0;
end;
end;
тогда уж, чтобы выводилось на выбранном пользователем месте
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
x1, y1: integer;
s: string;
begin
if key = #13 then begin
x1 := edit1.Left-Image1.Left; //вот здесь
y1 := edit1.Top-Image1.Top; //и здесь
s := Edit1.Text;
Image1.Canvas.TextOut(X1,Y1,s);
Edit1.Visible := False;
edit1.Left := 0;
edit1.Top := 0;
end;
end;