Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 21.03.2014, 21:19   #1
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 417
По умолчанию ввести текст в image1

как сделать чтобы в при нажимание на кнопку можна было ввести текст в image1 и текст можна было переташит
alman12 вне форума Ответить с цитированием
Старый 21.03.2014, 21:25   #2
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Код:
Image1.Canvas.TextOut(5,5,'Текст');
Так?
5, 5 - координаты
PaHaNjkee вне форума Ответить с цитированием
Старый 21.03.2014, 21:37   #3
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 417
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
Код:
Image1.Canvas.TextOut(5,5,'Текст');
Так?
5, 5 - координаты
нет не так здес невозможна перетащит текст
alman12 вне форума Ответить с цитированием
Старый 21.03.2014, 22:06   #4
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от alman12 Посмотреть сообщение
нет не так здес невозможна перетащит текст
Меняй координаты канваса в OnMouseMove и все. Будет тебе счастье
PaHaNjkee вне форума Ответить с цитированием
Старый 21.03.2014, 22:12   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Прозрачный лэйбл бросай и тягай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.03.2014, 22:34   #6
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Если только вот так
Вложения
Тип файла: rar Пример.rar (263.0 Кб, 16 просмотров)
PaHaNjkee вне форума Ответить с цитированием
Старый 21.03.2014, 22:41   #7
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 417
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
Если только вот так
здес можна толка один раз ввести текст , я хочу как на проге paint
alman12 вне форума Ответить с цитированием
Старый 22.03.2014, 12:13   #8
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от alman12 Посмотреть сообщение
здес можна толка один раз ввести текст , я хочу как на проге paint
Вы хотите сделать программу типа "Paint"? Зачем изобретать велосипед, а сначала что бы хоть что-то создать необходимо почитать литературу.
PaHaNjkee вне форума Ответить с цитированием
Старый 22.03.2014, 17:02   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
я хочу как на проге paint
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls, Menus;

type

  { TForm1 }
  TEdit2=class(StdCtrls.TEdit)
    Lab:TLabel;
  end;

  TForm1 = class(TForm)
    Image1: TImage;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    procedure Edit1Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: char);
    procedure Image1Click(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure MenuItem1Click(Sender: TObject);
  private
    procedure LabClick(Sender: TObject);
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Image1Click(Sender: TObject);

begin

end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var l:TLabel;
begin
  if tag=1 then begin
    l:=TLabel.Create(self);
    l.Parent:=self;
    l.Caption:='This is text';
    l.Transparent:=true;
    l.Font.Color:=clWhite;
    l.Font.Size:=32;
    l.AutoSize:=true;
    l.OnClick:=@LabClick;
    l.Top:=y;
    l.Left:=x;
    tag:=0;
  end;
end;

procedure TForm1.LabClick(Sender: TObject);
begin
 with TEdit2.Create(self) do begin
  Parent:=self;
  Left:=TLabel(Sender).Left;
  Top:=TLabel(Sender).Top;
  Width:=TLabel(Sender).Width;
  font.Size:=TLabel(Sender).font.Size;
  OnKeyPress:=@Edit1KeyPress;
  Lab:=TLabel(Sender);
  Show;
 end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
 if key<>#13 then exit;
 with TEdit2(Sender) do begin
  Lab.Caption:=Text;
  Hide;
 end;
end;

procedure TForm1.MenuItem1Click(Sender: TObject);
begin
 Tag:=1;
end;

end.
Идея подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2014, 10:19   #10
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 197
По умолчанию

alman12

image1 это набор точек. чтобы ввести текст в набор точек есть 2 варианта:

1) низкий уровень с ручной отрисовкой поля ввода: во время ввода с помощью Canvas.TextOut рисовать поверх изображения, находящегося в image1 изначально, введенный текст и мигающий/немигающий курсор, контролировать нажатия кнопок перемещения курсора и перерисовывать позицию курсора. По нажатию Enter окончательно восстановить изначальное изображение image1 и нарисовать на нем TextOut-ом введенный текст. По нажатию/отпусканию мыши переходить в режим перетаскивания, контролировать координаты мыши, перемещая наше рисуемое поле ввода по image1.

2) высокий уровень с отрисовкой стандартного поля ввода как отдельной компоненты: это облегчит лишь отрисовку курсора и введенного текста, т.к. это будет стандартная компонента типа edit1, рисующая сама на себе введенный текст и мигающий курсор, но все остальное с перетаскиванием текста по image1 - придется также вручную контролировать по нажатиям и перемещениям мыши с зажатой клавишей.

Готового метода "отрисуй ка мне на image поле ввода, чтоб можно было перетаскивать мышью еще, а по нажатию enter оставить растрированный текст на image в том месте где было поле ввода" в Delphi нету к сожалению.
blackstrip вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
image1.Refresh;image1.Repaint; Symba Общие вопросы Delphi 5 24.04.2011 03:53
Как ввести в ячеку текст и значение переменной? clever77 Microsoft Office Excel 3 21.04.2011 17:23
Ввести несколько строк и проверить, может ли этот текст быть классом Sudeki Помощь студентам 0 05.12.2009 15:45
Ввести несколько строк и проверить, может ли этот текст быть классом Sudeki Помощь студентам 2 26.11.2009 23:31
ввести и вывести текст limiry Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 12.05.2009 13:27


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS