![]() |
|
Run Time paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak?(ÇÖZÜLDÜ) - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Run Time paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak?(ÇÖZÜLDÜ) (/showthread.php?tid=5892) |
Run Time paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak?(ÇÖZÜLDÜ) - Hsavci - 07-04-2021 Merhaba, Delphi 7 ve paradox ile hazırladığım bir çalışmam mevcut. form açıldığında data.db içinde kayıtlı bulunan isim ve bilgilere göre (isim-left-top-renk) otomatik paneller oluşturuyorum. bu paneller içinden istediğimi form üzerinde sürükleyip bırakmak istiyordum bunu çözdüm ancak seçtiğim paneli sürükledikten sonra bu panelin yeni left ve top değerini tabloya kayıt etmem gerekiyor o kısmı çözemedim. form üzerine oluşan panellerden herhangi birini seçip sürükleyip formda bir yere bıraktıktan sonra bu taşıdığım panelin son bırakıldığı yerin left ve top değerini alabilirmiyiz? yardımcı olursanız sevinirim. Saygılarımla unit Unit58;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, DB, DBTables, DBCtrls, Buttons, StdCtrls, ExtCtrls,
ComCtrls, Mask, Grids, DBGrids, pngimage, RzBckgnd;
type
TForm58 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBImage5: TDBImage;
TabSheet2: TTabSheet;
DBImage6: TDBImage;
TabSheet3: TTabSheet;
DBImage7: TDBImage;
TabSheet4: TTabSheet;
DBImage8: TDBImage;
DBEdit6: TDBEdit;
Edit1: TEdit;
Edit4: TEdit;
Edit2: TEdit;
DBEdit7: TDBEdit;
Edit3: TEdit;
Edit5: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Edit6: TEdit;
DBGrid3: TDBGrid;
Panel4: TPanel;
Label2: TLabel;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
DBEdit12: TDBEdit;
DBEdit11: TDBEdit;
BitBtn11: TBitBtn;
BitBtn6: TBitBtn;
DBEdit8: TDBEdit;
DataSource1: TDataSource;
Table1: TTable;
DataSource2: TDataSource;
Table2: TTable;
DataSource3: TDataSource;
Table3: TTable;
OpenPictureDialog1: TOpenPictureDialog;
BitBtn5: TBitBtn;
BitBtn12: TBitBtn;
TabSheet5: TTabSheet;
DBImage1: TDBImage;
Button7: TButton;
DBEdit13: TDBEdit;
DBEdit14: TDBEdit;
RzBackground1: TRzBackground;
Image3: TImage;
Image1: TImage;
Image2: TImage;
Image4: TImage;
Label1: TLabel;
Edit7: TEdit;
Edit8: TEdit;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure KMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form58: TForm58;
K:TPanel;
implementation
uses Unit59, Unit1, Unit12, Unit62;
{$R *.dfm}
procedure TForm58.KMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
sc_DragMove=$F012;
begin
ReleaseCapture;
(Sender as TPanel).Perform(WM_SYSCOMMAND, sc_DragMove, 0);
edit7.text:=(inttostr((Sender as TPanel).left)+'x'+inttostr((Sender as TPanel).top)); // bu satırı ekleyince şimdi sorun çözüldü.
end;
procedure TForm58.FormShow(Sender: TObject);
begin
button1.Click;
end;
procedure TForm58.Button1Click(Sender: TObject);
var
BMrk:String;
y: Variant;
begin
BMrk:=Table1.BookMark;
with table1 do
begin
First;
while not EOF do
begin
K:=TPanel.Create(form1);
K.left:=StrToInt(dbedit2.text);
K.Top:=StrToInt(dbedit3.text);
K.Width:= StrToInt(dbedit4.text);
K.Height:= StrToInt(dbedit5.text);
K.Color:=StrToInt(DBedit14.text);
K.ParentColor:=False;
K.ParentBackground:=False;
K.ParentBiDiMode:=False;
K.parent:=Form58.PageControl1.Pages[StrToInt(dbedit7.Text)];
K.caption:=dbedit1.text;
K.font.size:=StrToInt(edit5.text);
K.Font.Name:='Times New Roman';
K.Font.color:=clblack;
K.OnMouseDown:=KMouseDown;
K.Cursor:=crHandPoint;
y :=Table2.Lookup('Masano', K.caption,'Masano');
if VarIsNull (y) then
begin
end
else
begin
end;
next;
end;
Table1.Bookmark:=BMrk;
end;
end;
Run Time oluşan panelin form üzerinde sürüklendikten sonraki kordinatları? - Hsavci - 07-04-2021 Yukarıdaki sorumun Cevabını uğraşırkern kendim buldum. edit7.text:=(inttostr((Sender as TPanel).left)+'x'+inttostr((Sender as TPanel).top)); Cvp: Run Time oluşan panelin form üzerinde sürüklendikten sonraki kordinatları? - Mr.X - 07-04-2021 Kodlarınızı okunur halde paylaşmanız daha iyi olacaktır. Run Time oluşan panelin form üzerinde sürüklendikten sonraki kordinatları? - Hsavci - 07-04-2021 Çok teşekkür ederim. şimdi düzenledim tekrar. Cvp: Çalışma zamanında paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak? - Hsavci - 07-04-2021 Bu oluşturduğum panellerin hepsini yok etmem gerekiyor. K.destroy; komutu ile sadece bir tanesini yok edebiliyorum. döngüye sokarak form üzerinde oluşan panellerin hepsini nasıl yok edebiliriz? Saygılarımla Çalışma zamanında paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak? - mustafaozpinar - 07-04-2021 Selamlar, Bir kontrol yok edilirken Destroy değil Free kullanılmalıdır. Aksi halde ciddi sorun yaşarsınız. for i:=0 to Form1.ControlCount-1 do if Form1.Controls[i] is TPanel then Form1.Controls[i].Free; Cvp: Çalışma zamanında paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak? - Hsavci - 07-04-2021 (07-04-2021, Saat: 21:29)mustafaozpinar Adlı Kullanıcıdan Alıntı: Selamlar, procedure TForm58.Button9Click(Sender: TObject); var i:integer; begin for i:=0 to Form58.ControlCount-1 do if Form58.Controls[i] is TPanel then Form58.Controls[i].Free; end; Bir deneme yaptım ama form üzerinde bulunan ve proje tasarımı sırasında oluşturduğum paneli yok etti. PageControl1-TabSheet1 üzerinde bulunan ve çalışma zamanında oluşturulan panelleri yok etmem gerekiyor. Yardımcı olabilirseniz sevinirim. Saygılarımla Çalışma zamanında paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak? - ozcanm - 08-04-2021
procedure TForm1.PanelTemizle;
var
i: Integer;
begin
for i := ComponentCount - 1 downto 0 do
begin
if (Components[i] is TPanel) and (TPanel(Components[i]).Parent = TabSheet1) then
TPanel(Components[i]).Free;
end;
end;
Çalışma zamanında paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak? - Hsavci - 08-04-2021 Mehmet bey yazdığınız kod çok işime yaradı.Çok Teşekkürler. |