Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Control Shirbazı gibi bir şey var mı?
#1
Mobil ve pc üzerinde çalışacak bir uygulama yazıyorum. MyDac kullanıyorum. Query ve tablolar ayrı bir DataModul dosyasında. Örneğin tablomda 30 tane alan var. Ve 25 tane tablom var.
Form üzerinde bu alanları (editbox, date, memo, combobox) otomatik olarak oluşturmanın bir yolu var mı?
HTML üzerinde çok kolay bir şekilde yapabildiğim bu konu delphide beni yordu.
Bir de bu kadar çok alanla çalışırken hangi layout u seçmeliyim? Örneğin controllerin sırasını değiştiremiyorum çoğunda, üsttekini alta, alttakini üste alamıyorum. En rahat hangisini kullanabilirim.
Bu konuda beni yönlendirirseniz çok sevinirim. Yoksa  çok fazla alan ve tabloyla çalışmak zulüm benim için Delphi de...
Cevapla
#2
(02-12-2017, Saat: 18:45)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMobil ve pc üzerinde çalışacak bir uygulama yazıyorum. MyDac kullanıyorum. Query ve tablolar ayrı bir DataModul dosyasında. Örneğin tablomda 30 tane alan var. Ve 25 tane tablom var.
Form üzerinde bu alanları (editbox, date, memo, combobox) otomatik olarak oluşturmanın bir yolu var mı?
HTML üzerinde çok kolay bir şekilde yapabildiğim bu konu delphide beni yordu.
Bir de bu kadar çok alanla çalışırken hangi layout u seçmeliyim? Örneğin controllerin sırasını değiştiremiyorum çoğunda, üsttekini alta, alttakini üste alamıyorum. En rahat hangisini kullanabilirim.
Bu konuda beni yönlendirirseniz çok sevinirim. Yoksa  çok fazla alan ve tabloyla çalışmak zulüm benim için Delphi de...

Merhabalar,

Yanlış anlamadıysam, siz veriye göre nesne oluşturmak istiyorsunuz. Ve bunu manuel yerine otomatikman kodları ile yapmak istiyorsunuz.

Eğer doğru anlamış isem;

for ve nesne oluşturma ile bu dedikleriniz kolay. Size fikir verebilmesi için geçmişte yazdığım ve bakarken utandığım Rolleyes  bir kod bloğunu paylaşayım.

procedure TbiMainMenu.ProjeYenile(SQLSorgu: String);
var
aquery, aquerya: TUniQuery;
I, I2: Integer;
Panel: TbsSkinPanel;
Baslik, ProjeSahibi, Dil, Kisi, Tarih, ID: TbsSkinLabel;
Katil: TbsSkinButton;
ScrollPanel: TbsSkinScrollPanel;
begin
projeler.Close;
projeler.SQL.Text := SQLSorgu;
projeler.Open;
projeler.Active := True;


for I2 := biMainMenu.ComponentCount - 1 downto 0 do
begin
 if biMainMenu.Components[I2] is TbsSkinScrollPanel then
 biMainMenu.Components[I2].Destroy;
end;


ScrollPanel := TbsSkinScrollPanel.Create(Self);
ScrollPanel.SkinData := BiLogin.bsSkinData1;
ScrollPanel.Parent := biMainMenu;
ScrollPanel.Visible := False;
// ScrollPanel.ScrollType := stHorizontal;
// ScrollPanel.ScrollOffset := 100;
// ScrollPanel.ScrollTimerInterval := 100;
ScrollPanel.Top := 47;
ScrollPanel.Width := 617;
ScrollPanel.Left := 381;
ScrollPanel.Height := 477;
ScrollPanel.ScrollType := stVertical;
ScrollPanel.Name := 'bsSkinScrollPanel1';
ScrollPanel.Visible := True;

projeler.first;

 while not projeler.Eof do
begin
 for I := 0 to projeler.RecordCount - 1 do
 begin
  Panel := TbsSkinPanel.Create(self);
  Panel.Parent := ScrollPanel;
  Panel.Visible := False;
  Panel.SkinData := BiLogin.bsSkinData1;
  Panel.TransparentMode := True;
  Panel.Name := 'Panel'+IntToStr(I);
  Panel.BorderStyle := bvRaised;
  Panel.Top := 16 + I * 140;
  Panel.Left := 16;
  Panel.Height := 130;
  Panel.Width := 585;


  Baslik := TbsSkinLabel.Create(self);
  Baslik.Parent := Panel;
  Baslik.Visible := False;
  Baslik.SkinData := BiLogin.bsSkinData1;
  Baslik.Caption := projeler.FieldByName('BASLIK').AsString;
  Baslik.UseSkinSize := False;
  Baslik.UseSkinFont := False;
  Baslik.DefaultFont.Style := [fsBold];
  Baslik.DefaultFont.Size := 10;
  Baslik.Left := 14;
  Baslik.Top := 11;
  Baslik.Width := 529;
  Baslik.Height := 21;
  Baslik.Visible := True;



  ProjeSahibi := TbsSkinLabel.Create(self);
  ProjeSahibi.Parent := Panel;
  ProjeSahibi.Visible := False;
  ProjeSahibi.SkinData := BiLogin.bsSkinData1;
  aquery := TUniQuery.Create(nil);
  aquery.Connection := BiLogin.UniConnection1;
  aquery.Close;
  aquery.SQL.Text := 'select * from bilogin where ID='+projeler.FieldByName('SAHIPID').AsString;
  aquery.Open;
  aquery.Active := True;
  ProjeSahibi.Caption := 'Proje Sahibi: '+aquery.FieldByName('ADSOYAD').AsString;
  ProjeSahibi.Left := 16;
  ProjeSahibi.Top := 28;
  ProjeSahibi.Width := 529;
  ProjeSahibi.Height := 21;
  ProjeSahibi.Visible := True;


  Dil := TbsSkinLabel.Create(self);
  Dil.Parent := Panel;
  Dil.Visible := False;
  Dil.SkinData := BiLogin.bsSkinData1;
  Dil.Caption := 'Proje Dili: '+projeler.FieldByName('DIL').AsString;
  Dil.Left := 16;
  Dil.Top := 46;
  Dil.Width := 529;
  Dil.Height := 21;
  Dil.Visible := True;


  ID := TbsSkinLabel.Create(self);
  ID.Parent := Panel;
  ID.Visible := False;
  ID.SkinData := BiLogin.bsSkinData1;
  ID.Caption := projeler.FieldByName('ID').AsString;
  ID.Left := 16;
  ID.Top := 46;
  ID.Width := 529;
  ID.Height := 21;;


  Kisi := TbsSkinLabel.Create(self);
  Kisi.Parent := Panel;
  Kisi.Visible := False;
  Kisi.SkinData := BiLogin.bsSkinData1;
  Kisi.Caption := 'Proje Katılım Sayısı: '+IntToStr(projeler.FieldByName('KISI').AsInteger);
  Kisi.Left := 16;
  Kisi.Top := 63;
  Kisi.Width := 529;
  Kisi.Height := 21;
  Kisi.Visible := True;


  Tarih := TbsSkinLabel.Create(self);
  Tarih.Parent := Panel;
  Tarih.Visible := False;
  Tarih.SkinData := BiLogin.bsSkinData1;
  Tarih.Caption := 'Proje Başlangıç Tarihi: '+DateToStr(projeler.FieldByName('TARIH').AsDateTime);
  Tarih.Left := 16;
  Tarih.Top := 81;
  Tarih.Width := 529;
  Tarih.Height := 21;
  Tarih.Visible := False;


  Katil := TbsSkinButton.Create(self);
  Katil.Parent := Panel;
  Katil.Visible := False;
  Katil.SkinData := BiLogin.bsSkinData1;
  Katil.UseSkinSize := False;
  Katil.CanFocused := True;
  Katil.TabStop := True;
  Katil.Name := 'B'+IntToStr(projeler.FieldByName('ID').AsInteger);
  Katil.Caption := 'Ayrıntılar';
  Katil.Top := 90;
  Katil.Width := 75;
  Katil.Height := 35;
  Katil.Left := 480;
  Katil.UseSkinSize := False;
  Katil.CanFocused := False;
  Katil.OnClick := KatilButon;
  Katil.Visible := True;
  Panel.Visible := True;

  projeler.Next;
  end;
end;


// AQueryA := TUniQuery.Create(self);
// AQueryA.Connection := BiLogin.UniConnection1;
// AQueryA.Close;
// AQueryA.SQL.Text := 'select * from biprojeler where SAHIPID='+IntToStr(biLogin.UniQuery1.FieldByName('ID').AsInteger);
// AQueryA.ExecSQL;
// AQueryA.Open;
// AQueryA.Active := True;
//
// if AQuerya.RecordCount > 0 then
// begin
//  BiProjeEkle.Enabled := True;
// end
// else
// begin
//   biProjeEkle.Enabled := False;
// end;



end;



Saygılarımla,
İyi çalışmalar.
May the force be with you!
Cevapla
#3
Cevabınız için teşekkürler. Ben aslında design bölümünden oluşturmak istiyorum. Bu şekilde çok fazla değer girmem ve tüm x,y vb. değerleri belirtmem gerekir.
Sihirbaz yoksa bile manual olarak ekleyim, ama sonrasında yerlerini kolayca değiştirebileyim, araya kolayca eklemeler yapabileyim istiyorum. Html deki basit bir Table nesnesi işimi görebilecekken, bir dolu layout nesnesi var delphide, ancak pratik değiller...
Cevapla
#4
İlgili TDataset nesnesinin üzerinde çift tıklayın, fields editöre field'ların dolmasını sağlayın. Sonra tüm fieldları seçin ve fields editörden formun üzerine sürükleyip bırakın.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
Python kullanirken döngü ile nesneleri belirli bir sayıda ve mecburen ayni isimde oluşturuyordum. Buton ve label oluştururken sıkıntı olmuyordu ama edit vb nesnelerden veri Alman gerekirse sıkıntı olur diye düşünüyorum.

Kabaca şöyle:

for i in liste:
   label = Label(text=i)
   buton = Button(text=“Buton“+i, command=göster(i))

   label.pack()
   buton.pack()

Umarım bir fikir edinmenize yardımcı olmuşumdur. İyi çalışmalar...
WWW
Cevapla
#6
(02-12-2017, Saat: 18:45)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlYoksa  çok fazla alan ve tabloyla çalışmak zulüm benim için Delphi de...
Hemen Delphi'yi suçlamayalım.Birçok doktrin ve sistem için üç aşağı beş yukarı şu doğrudur ki: çoğunlukla sorun sistemde değil uygulayanlardadır.Bir de Kevin Mitnick'in şu sözünü çok severim:"Bir sistemin en zayıf noktası insandır."
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#7
(02-12-2017, Saat: 21:23)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(02-12-2017, Saat: 18:45)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlYoksa  çok fazla alan ve tabloyla çalışmak zulüm benim için Delphi de...
Hemen Delphi'yi suçlamayalım.Birçok doktrin ve sistem için üç aşağı beş yukarı şu doğrudur ki: çoğunlukla sorun sistemde değil uygulayanlardadır.Bir de Kevin Mitnick'in şu sözünü çok severim:"Bir sistemin en zayıf noktası insandır."

Benimki suçlama değil. Sadece böylesi büyük bir programdan beklentim çok. Belkide şu an yüzde 10 una hakimim sadece. Ama bana lazım olan tüm konularda makaleleri okuyorum, videoları izliyorum. Bunlarda sorun yok. Ama videolarda doğal olarak üç dört tane control nesnesi ekliyor. 30 tane ekleyince, sonra sıralamayı değiştirmek istediğimde, araya bir şey eklemek istediğimde beni çok zorluyor.

(02-12-2017, Saat: 20:29)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİlgili TDataset nesnesinin üzerinde çift tıklayın, fields editöre field'ların dolmasını sağlayın. Sonra tüm fieldları seçin ve fields editörden formun üzerine sürükleyip bırakın.

Kullandığım diğer Connection larda bunu kullanıyordum. Ancak MyDac'da olmuyor maalesef. Dediğiniz gibi tekrar denedim. Query üzerinde sağ tıkladım, Fields Editor ü açtım. Alanları ekledim. Ancak bu alanları form üzerine sürükleyemiyorum. Eğer çalışsa büyük kolaylık olacaktı benim için.
Cevapla
#8
(03-12-2017, Saat: 01:35)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(02-12-2017, Saat: 21:23)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHemen Delphi'yi suçlamayalım.Birçok doktrin ve sistem için üç aşağı beş yukarı şu doğrudur ki: çoğunlukla sorun sistemde değil uygulayanlardadır.Bir de Kevin Mitnick'in şu sözünü çok severim:"Bir sistemin en zayıf noktası insandır."

Benimki suçlama değil. Sadece böylesi büyük bir programdan beklentim çok. Belkide şu an yüzde 10 una hakimim sadece. Ama bana lazım olan tüm konularda makaleleri okuyorum, videoları izliyorum. Bunlarda sorun yok. Ama videolarda doğal olarak üç dört tane control nesnesi ekliyor. 30 tane ekleyince, sonra sıralamayı değiştirmek istediğimde, araya bir şey eklemek istediğimde beni çok zorluyor.

(02-12-2017, Saat: 20:29)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİlgili TDataset nesnesinin üzerinde çift tıklayın, fields editöre field'ların dolmasını sağlayın. Sonra tüm fieldları seçin ve fields editörden formun üzerine sürükleyip bırakın.

Kullandığım diğer Connection larda bunu kullanıyordum. Ancak MyDac'da olmuyor maalesef. Dediğiniz gibi tekrar denedim. Query üzerinde sağ tıkladım, Fields Editor ü açtım. Alanları ekledim. Ancak bu alanları form üzerine sürükleyemiyorum. Eğer çalışsa büyük kolaylık olacaktı benim için.

Bu özellik Delphi'nin çok eski sürümlerinden beri mevcut, çalışmıyor ise bir şeyi yanlış yapıyor olma ihtimaliniz yüksek. Ayrıca yazdıklarınız sizin için net olabilir fakat yaşadığınız sorunu da net olarak aktarmadığınızı/aktaramadığınızı düşünüyorum. Neyin ne sıralamasını değiştirmek istiyorsunuz da zorlanıyorsunuz, emin olun buradaki insanların bir form üzerinde yüzlerce nesnesi olan en az bir kaç ekranı vardır ve dediğiniz gibi bir zorluk yaşadıklarını sanmıyorum. Siz yaşadığınız sıkıntıyı/zorluğu tam olarak ifade ederseniz eminim güzel çözümler/cevaplar zaten gelecektir.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question tab control BY-HAYALET 7 405 19-02-2018, Saat: 01:37
Son Yorum: mcuyan
  ListView GlyphButton nesnesini CheckBox gibi kullanmak Fesih ARSLAN 0 1.412 24-07-2016, Saat: 17:25
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi