Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
ВнизПрограммно создал 10 TImage.Как кликом мышки выделить конкретный Найти похожие ветки
← →
studenttgata © (2008-07-09 14:28) [0]Программно создал 10 объектов TImage. Как кликом мышки получить выбранный объект для назначения дополнительных свойств (выделить , изменить параметры записи и самого объекта).
const
DX=40; //отступы от объектов
DY=20;
type coord = record
x:integer;
y:integer;
end;
type oborudovanie = record //итоговый класс, свойства которого необходимо уточнять
activ:boolean;
Q_Form:TImage;
XY:coord;
name:String;
end;
type
Procedure ClickI(Sender: TObject); //объявление процедуры для определения фокуса (фокус – выделенный объект, для назначения дополнительных свойств)
private
{ Private declarations }
public
{ Public declarations }
ArrayLine: array [0..sizeLine] of oborudovanie; //массив элементов
end;
PROCEDURE TFORM1.CLICKI(SENDER: TOBJECT);
BEGIN
SHOWMESSAGE("NAME OBJECT ...");
END;
procedure PaintModul(Element:oborudovanie;FormParent:TForm;PopupM:TPopupMenu);
begin
form1.LineCount:=Form1.LineCount+1;
Element.XY.y:=Form1.Y_Start; //начальные точки прорисовки объекта
Element.XY.x:=Form1.X_Start;
Element.Q_Form:=TImage.Create(FormParent);
Element.Q_Form.Parent:=FormParent;
Element.Q_Form.Left:=Element.XY.x;
Element.Q_Form.Top:=Element.XY.y;
Element.Q_Form.Height:=DY;
Element.Q_Form.Width:=DX;
Element.Q_Form.Cursor:=crHandPoint;
Element.Q_Form.Canvas.Rectangle(0,0,DX,DY) ;
Element.name:=Form1.Edit1.Text;
Element.Q_Form.Canvas.TextOut(0,0,Element.name);
Element.Q_Form.PopupMenu:=PopupM;
Element.Q_Form.Transparent:=True;
Element.Q_Form.Visible:=true;
ELEMENT.Q_FORM.ONCLICK:=FORM1.CLICKI;
end;
← →
{RASkov} © (2008-07-09 14:34) [1]Смотри в сторону Sender"а в методах классов...
Т.е. Сендер и есть тот объект, кто вызвал данный метод....
← →
{RASkov} © (2008-07-09 14:37) [2]А код - лажа
Что за procedure PaintModul... Paint(прорисовка) и создание в нем(й) объектов без ихого там уничтожения - подозрительно. :)
← →
studenttgata © (2008-07-09 14:43) [3]теоретически... созданные объекты должны сохранятся на протяжении всей программы. пробовал через Sender... но там могу получить только имя класса, на котором было выполнено нажатие.
← →
studenttgata © (2008-07-09 14:47) [4]var O:TObject;
st:string;
begin
O:=Sender.Create;
st:=Sender.ClassName;
Могу ли я из этих данных получить номер объекта, для дальнейшей работы с полями записи?
← →
Palladin © (2008-07-09 14:49) [5]
> var O:TObject;
> st:string;
> beginO:=Sender.Create;
> st:=Sender.ClassName;
и каков вселенский смысл этих строк?
← →
{RASkov} © (2008-07-09 14:51) [6]> [3] studenttgata © (09.07.08 14:43)
Смотри какая штука есть:procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(TEdit(Sender).Text);
ShowMessage(TButton(Sender).Caption);
ShowMessage(IntToStr(TComponent(Sender).Tag));
ShowMessage(TControl(Sender).Name);
//Но это не правильно, хотя для компилятора все ОК.
//Правильно это когда перед приведением проверить объект,
//на нужный нам тип. т.е. примерно так:
if Sender is TButton then TButton(Sender).Caption:="New caption";
end;
← →
studenttgata © (2008-07-09 14:54) [7]Может с помощью этих строк можно получить "копию" класса для дальнейшей работы, а в дальнейшем и узнать номер записи, в которой он находится. Если есть другие способы работы с произвольно выбранным (из 10 программно созданных объектов класса TImage, к примеру), то буду благодарен за подсказку..
← →
Palladin © (2008-07-09 14:57) [8]во первых не класса, а объекта. во вторых для дальней работы где?
← →
studenttgata © (2008-07-09 15:03) [9]после создания объектов необходимо залить их выбранным цветом, после чего, добавить их "вес" (почти транспортная задача для определения кратчайшего пути).
← →
Palladin © (2008-07-09 15:04) [10]
> studenttgata © (09.07.08 15:03) [9]
1. они у тебя уже созданы
2. при чем здесь событие клик?
← →
studenttgata © (2008-07-09 15:08) [11]да.
клик нужен для того, чтоб произвольно, при необходимости можно было изменить параметры конкретного объекта.
{RASkov}, огромно благодарствую. получилось перемещать выбранные объекты. думаю, что дальше разберусь, как мне их идентифицировать.
← →
studenttgata © (2008-07-09 15:10) [12]если есть еще способы обращения к конкретным объектам... скажите, или предложенное {RASkov} есть оптимальным?
← →
studenttgata © (2008-07-09 15:15) [13]спасибо всем!
← →
oldman © (2008-07-09 15:15) [14]
> Как кликом мышки получить выбранный объект для назначения
> дополнительных свойств
Можно данную фразу перевести на русский язык?
Если ты не можешь разобраться в 10 объектах, так у них есть никому не нужное свойство tag.
← →
{RASkov} © (2008-07-09 15:16) [15]> [0] studenttgata © (09.07.08 14:28)
> type oborudovanie = record //итоговый класс, свойства которого необходимо уточнять
Это не класс, это тип. Что-то ты путаешь очень сильно все....
> [11] studenttgata © (09.07.08 15:08)
> как мне их идентифицировать.
Да как угодно можно.... можно имя использовать, можно Tag, а можно и сам указатель на объект использовать...
Но в методе объекта оптимальнее [1] не найдешь....
← →
studenttgata © (2008-07-09 23:06) [16]немного в понятияхпутаюсь, т.к. сам учусь. Люди, которым работу свою показываю, смотрят на итог, а не на код.
так и боремся..
← →
brother © (2008-07-10 05:46) [17]> смотрят на итог,
собственно и правильно, но если код ...., то потом в нем черт ногу сломит, ну и баги)
← →
Ega23 © (2008-07-10 09:35) [18]
> смотрят на итог, а не на код.
это плохо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c