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

> ВНИМАНИЕ!

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

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


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

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


:D
=====
Здоровеньки
=-=-=-=-=-=-=
Вот создать ясно как, а
как их теперь их разрушить
ведь как они точно зваться Я не знаю
-=-=-=-=-=-=-=


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 156
Пол: Мужской

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


e:TEdit;

e:=TEdit.create(nil);
e.parent:=Form1;
.... работаем с компонентом

e.free


--------------------
With the best regards Vit

Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

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


:-/
-=-=-=
Промблемка заключается в том
что компонент не один а много они создаются в процессе
экплуатации программы
какие имена то будут
допустим первоначально имя         MyPanel
а этих панелек штук пять генерироваться будет
в разных местах
-=-=-=-=
хотелось бы выбирать из этих пяти какой ни-будь на вкус
-=-=-=-=-
Но всеравно спасибо
-=-=-=-=-


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

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


так создаю компонент
точнее так они все содаютсч сколько понадобится МУФТ
на кабеле


MyPan := TPanel.Create(Image1);   //  MyForm теперь "обладает" MyButton
with MyPan do
BEGIN
Parent :=ScrollBox1;
MyPan.Name:=('MyPan')+Form7.Query1.FieldByName('Number').asString;
height := 10;
 width := 10;
  BevelInner:=bvLowered;
   caption :=Form7.Query1.FieldByName('Number').asString;
    MyPan.Cursor:=crHandPoint;
     MyPan.Color:=clWhite;
      MyPan.PopupMenu:=PopupMenu1;
       MyPan.OnMouseMove:=MyPanMouseMov;
        Form7.Image1.Left:=0;
       Form7.Image1.Top:=0;
      left:=Form7.Query1.FieldByName('Mous_X').asInteger;
     top:=Form7.Query1.FieldByName('Mous_Y').asInteger;
END;


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

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


этими двумя событиями пытаемся что нить
сними сделать

Причем компонент удалаятся
но только последне созданый и один разз

ПОЧЕМУ ???

Procedure TForm7.MyPanMouseMov(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
     begin
MyPan.Color:=clRed;
Label1.Caption:=MyPan.Name;
     end;
procedure TForm7.Del1Click(Sender: TObject);
begin
   MyPan.Destroy;
   //MyPan.SetFocus

end;


Сообщение отредактировано: volvo -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

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


Может, попробовать завести массивчик этих панелей? (var pans: array[1..maxN] of TPanel. Потом что-то вроде pans[i]:=TPanel.Create(...)<...>; pans[i].free

По идее, должно работать


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

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


Да создал массив
типа
MyPan: array[1..99]of Tpanel;

Так создаю

procedure TForm7.FormActivate(Sender: TObject);
Var
 c:String;
 i:Integer;

Label
 MuftsNext;

begin
 With Form7 do begin
   ScrollBox1.VertScrollBar.Position:=0;
   ScrollBox1.HorzScrollBar.Position:=0;
   ilLine.Caption:=Form2.NamesLine;
   ilFider.Caption:=Form2.NamesFider;
   ilAct_BasDat.Caption:=Form2.NamesDatBas;
 end;

 with Form7.Query1 do begin
   Close;        // закрыть файл-результат выполнения предыдущего запроса
   SQL.Clear; // удалить текст предыдущего запроса
                    // записываем новый запрос в свойство SQL
   SQL.Add('SELECT Number, Fiders, Lines, LonFroTp,
     LonGoTp, Im_X, Im_Y, Mous_X, Mous_Y');
   SQL.Add('FROM "MuftZaos.db"');
   SQL.Add('WHERE');
   Sql.Add('(Lines="'+Form2.NamesLine+'")');    //выбор по двум
   Sql.Add('and');                             //значения
   Sql.Add('(Fiders="'+Form2.NamesFider+'")');//сразу по SQl запросу
   SQL.Add('ORDER BY Number, Fiders, Lines, LonFroTp,
     LonGoTp, Im_X, Im_Y, Mous_X, Mous_Y');
   Open;      // активизируем выполнение запроса
 end;
 Form7.Query1.First;
 c:=Form7.Query1.FieldByName('Number').asString;

MuftsNext:
 //  if Query1.Eof=true then begin
 //       exit;
 //     end
 //   else begin
 For i:=1 to Form7.Query1.RecordCount do begin
   MyPan[i] := TPanel.Create(Image1);
   MyPan[i].Name:='Pan' + c;
   //Parent :=ScrollBox1;
   MyPan[i].height := 10;
   MyPan[i].width := 10;
   MyPan[i].BevelInner:=bvLowered;
   MyPan[i].caption :=Form7.Query1.FieldByName('Number').asString;
   MyPan[i].Cursor:=crHandPoint;
   MyPan[i].Color:=clWhite;
   MyPan[i].PopupMenu:=PopupMenu1;
   MyPan[i].left:=Form7.Query1.FieldByName('Mous_X').asInteger;
   MyPan[i].top:=Form7.Query1.FieldByName('Mous_Y').asInteger;
   MyPan[i].Parent :=ScrollBox1;
   MyPan[i].OnMouseMove:=MyPanMouseMov;
   Form7.Image1.Left:=0;
   Form7.Image1.Top:=0;
   Form7.Query1.Next;
   //END;
   c:=Form7.Query1.FieldByName('Number').asString;
 end;

// Form7.Query1.Next;
// c:=Form7.Query1.FieldByName('Number').asString;
// Goto MuftsNext;
end;


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

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


А так обрабатываю события
ВСЕ ЗАРАБОТАЛО

-=-=-=-=-=-=--=

Procedure TForm7.MyPanMouseMov(Sender: TObject; Shift: TShiftState;
 X, Y: Integer);
begin
 Label1.Caption:=((Sender as TPanel).Name);
 StatusBar1.Panels[4].Text:=((Sender as TPanel).Caption);

{
Вот тут самое интересное если бы не наткнулся на
эту строку то долго бы еще парился как определить
из какого динамичексго компонента пришло событие
Sender --- отправитель
}
(Sender as TPanel).Color:=clRed;
end;

{
Выборка динамического компонента
из массива и его изничтожение как
компонента, а тк же из базы данных
}
procedure TForm7.Del1Click(Sender: TObject);
Var
 Mufts:Integer;
 L,F:String;
begin
 Mufts:=StrToInt(Form7.StatusBar1.Panels[4].Text);
 MyPan[Mufts].Destroy;
 Form7.Query1.Locate('Number',Mufts,[]);
 L:=Form7.Query1.FieldByName('Lines').AsString;
 F:=Form7.Query1.FieldByName('Fiders').AsString;
 Form7.Table1.Locate('Number;Lines;Fiders',VarArrayOf([Mufts,L,F]),[]);
 Form7.Table1.Delete;
end;
{
при закрытии всей формы мы
уничтожим все компоненты
прикрепленные компоненту Image1
}
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Image1.DestroyComponents;
end;

end.


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

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


Надо же, хоть что-то из моих советов заработало ;D


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




- Текстовая версия 23.08.2017 3:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"