:D
=====
Здоровеньки
=-=-=-=-=-=-=
Вот создать ясно как, а
как их теперь их разрушить
ведь как они точно зваться Я не знаю
-=-=-=-=-=-=-=
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;
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;
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;
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.