|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.11.2011, 16:23 | #1 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
Как run-time создать от руки компонент?
Собственно такой трудный вопрос:
1.При нажатии на speed button, открывается диалоговое окно с полем edit куда пользователь пишет название нового компонента (в моем случае TImage), по нажатию Ок, курсор меняется на crosshair тип, и пользователю разрешается рисовать этот компонент (TImage), пользователь указывает шелчком первую точку, потом водит мышкой и отрисовывается любого вида прямоугольник (предпросмотр готового компонента), потом по второму шелчку, TImage создается того размера что нарисовал пользователь, в том месте где он его нарисовал. Следом открывает OpenDialog для выбора картинки для этого компонента. И после выбора уже, вставляется компонент с картинкой, а в treeview записывается его название, введеное в начале пользователем. При выборе компонента в treeview, этот компонент на форме выделяется рамкой, также он рамкой выделяется, если один раз кликнуть прямо на него, слева будет распологаться меню, где пользователь может в любое время изменить название, картинку загрузить другую, и всякое другое. Для обьекта должна быть возможность редактирование размера, например если пользователь с краю зацепит, то можно изменять размер передвижение мыши, а также перетаскивать компонент нажав и зажав кнопку мыши. Как это осуществлить? Также можно удалить объект, нажав delete или нажав кнопку удалить в меню. Как обращаться к run-time созданому объекту в run-time? |
22.11.2011, 16:40 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Подарите пользователю Дельфи, пусть играется )
Если серъёзно, то всё это муторно и долго надо ручками программировать. Вряд ли есть готовые решения, хотя хз.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
22.11.2011, 16:55 | #3 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
Да суть в том, что человеку хочеться программу. в которой можно было бы создавать мини альбом, со свободным расположением картинок и текста, и сохранять его в файл, и дать возможность печати в pdf, jpeg, а также на принтер. А я с таким еще не работал.
|
22.11.2011, 17:02 | #4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Такая программа уже есть, называется Фотошоп )
Возможно, получится заюзать какой-нибудь репортопостроитель, включающий в себя рантайм построитель шаблонов. Типа фастрепорт. Надо смотреть по фичам.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
22.11.2011, 17:16 | #5 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
FastReport не позволяет такое вытворять, я его уже пробовал, в остальных тоже не наблюдалось, а собственно идея заложенная в photoshope подходит, только вот узнать бы как она осуществленна?
|
22.11.2011, 17:21 | #6 | |||||||||||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Если задачу разбить на мелкие задачи, то она станет проще, но программировать придется больше.
Цитата:
Цитата:
показываем ее в нужный момент проверяем что нажал пользователь showModal =mrok Цитата:
правило хорошего тона. Все что меняли надо в конце восстанавливать. для воостановления куроса запоминаем старое значения. Цитата:
ловим щелчок мыши OnMouseUp проверяем наш флаг ( состояние формы первая точка) и запоминаем место (координаты). и ставим флаг нужна вторая точка (другое состояние ) пригодятся методы clienttoScreen / ScreenToClient. Цитата:
и второй щелчок.OnMouseUp и проверяем флаг (состояние вторая точка) Цитата:
Цитата:
Код:
Код:
Цитата:
Код:
Цитата:
Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 22.11.2011 в 17:28. |
|||||||||||
22.11.2011, 17:28 | #7 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
Предположим, первый этап:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg, ComCtrls; type TForm1 = class(TForm) btn1: TButton; dlgOpen1: TOpenDialog; tv1: TTreeView; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; ImageName: String; implementation uses Unit2; {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); Var Node : TTreeNode; begin Form2.ShowModal; with TImage.Create( Form1 ) do Begin Parent := Form1; // this is important Canvas.Handle; Left := 244; // X coordinate Top := 155; // Y coordinate Name := 'imagename'; // this is important Width := 255; Height := 255; Stretch := True; Visible := True; Visible := True; dlgOpen1.Execute; Picture.LoadFromFile(Form1.dlgOpen1 .FileName); end; Node:=tv1.Items.Add(nil,imagename); Node.ImageIndex:=0; end; end. unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) edt1: TEdit; lbl1: TLabel; btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.btn1Click(Sender: TObject); begin ImageName:=edt1.Text; Close; end; end. Собственно от этого как плясать? |
22.11.2011, 18:29 | #8 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Набросал за 5 минут...
Развивайте логику, мсье... За отдельную плату - сделаю строго по ТЗ и с красивым оформлением... контакты в профиле.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
23.11.2011, 11:35 | #9 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
А кто нибудь видел исходник программы типа Photoshop простенькой? я бы оттуда содрал.
|
23.11.2011, 12:02 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создать record в Run-time | ebuchiysayt_ebuchi | Общие вопросы Delphi | 7 | 31.07.2011 19:02 |
Обработка событий компонент, созданных в Run-Time | Рик | Компоненты Delphi | 1 | 29.03.2011 14:50 |
Run-time error 13 | olimpus | Microsoft Office Excel | 11 | 25.12.2010 22:49 |
Как создать TPageControl в run-time | tonatas | Общие вопросы Delphi | 4 | 13.08.2010 22:57 |
Ошибка Run-Time error 13 | DEZuv | Microsoft Office Access | 0 | 03.04.2009 12:25 |