Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1214055444
TUser
2008-06-21 17:37
2008.08.10
Просьба к счастливым обладателям Delphi


15-1214040262
Kostafey
2008-06-21 13:24
2008.08.10
С днем рождения ! 21 июня


15-1213789690
Игорь М.
2008-06-18 15:48
2008.08.10
файл с расширением *.FRP чем открыть ?


6-1191841928
Elen
2007-10-08 15:12
2008.08.10
Закрыть подключение через NetFileClose


6-1192002210
Rusya
2007-10-10 11:43
2008.08.10
Прогресс операции в TIdFTP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский