IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Графический редактор, Вставка текста
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской
Реальное имя: Вадим

Репутация: -  0  +


Добрый вечер.
Исходный текст можете взять из предыдущего сообщения с тем же названием.
Вопрос вот в чем. Как вставить текст как в Peint'e в любое место компонента Image т.е чтобы щелкнуть в нужное место image и ввести текст допустим в edit. За любые ответы спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Если ты хочешь привязываться к 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;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


тогда уж, чтобы выводилось на выбранном пользователем месте
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 и невидимости. не разобралась, в общем sad.gif


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.01.2021 1:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name