Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Run Time paneller oluşturmak ve drag-drop ile panelin kordinatlarını bulmak?(ÇÖZÜLDÜ)
#1
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;
Cevapla
#2
Yukarıdaki sorumun Cevabını uğraşırkern kendim buldum.

edit7.text:=(inttostr((Sender as TPanel).left)+'x'+inttostr((Sender as TPanel).top));
Cevapla
#3
Kodlarınızı okunur halde paylaşmanız daha iyi olacaktır.
Cevapla
#4
Çok teşekkür ederim. şimdi düzenledim tekrar.
Cevapla
#5
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
Cevapla
#6
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;
Cevapla
#7
(07-04-2021, Saat: 21:29)mustafaozpinar Adlı Kullanıcıdan Alıntı: 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;


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
Cevapla
#8
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;
Cevapla
#9
Mehmet bey yazdığınız kod çok işime yaradı.Çok Teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Projede aynı anda 2 farklı soap servisi kullanımı (Çözüldü) tuna 2 185 19-04-2021, Saat: 19:30
Son Yorum: tuna
  MDI Form : Çözüldü Bay_Y 5 222 15-04-2021, Saat: 20:01
Son Yorum: ahmet6513
  IdHttp Dönen veri status Problemi [Çözüldü ] Mesut 26 1.159 30-03-2021, Saat: 15:45
Son Yorum: Mesut
  Dbgrid Drag&Drop İle Satır Sıralama TheEAK 6 957 18-03-2021, Saat: 14:50
Son Yorum: TheEAK
  Masa Üstü uygulamam için Google veya Yandex map [Çözüldü] COMMANDX 18 1.808 01-03-2021, Saat: 22:33
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi