![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
vadim(b) |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Реальное имя: Вадим Репутация: ![]() ![]() ![]() |
Добрый вечер.
Исходный текст можете взять из предыдущего сообщения с тем же названием. Вопрос вот в чем. Как вставить текст как в Peint'e в любое место компонента Image т.е чтобы щелкнуть в нужное место image и ввести текст допустим в edit. За любые ответы спасибо |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Если ты хочешь привязываться к 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;
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
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;
Сообщение отредактировано: volvo - 15.06.2007 15:29 |
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
тогда уж, чтобы выводилось на выбранном пользователем месте
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;
пробовала сначала подобное, но намудрила с сочетанием SetFocus'a и невидимости. не разобралась, в общем ![]() -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 1.08.2025 19:23 |