formdaki genel değişkenleri listelemek ve deger verme?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

Kod: Tümünü seç

uses
windows..unit1;
public
gelfr:tfromclass;
end;

type 
  TFormClass = class of TForm; 

procedure...
begin

gelfr.kno:=10;//hata satırı kno yok diyor ama unit1 de uses de tanımlı
end;
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

Kod: Tümünü seç

with gelfr do begin
TSayisal(FindComponent('muskno')).Text:=DBGrid1.DataSource.DataSet.FIELDBYNAME('kno').VALUE;
TADBText(FindComponent('odano')).Text:=DBGrid1.DataSource.DataSet.FIELDBYNAME('odano').VALUE;
*****
if (gelfr is TUrsat)  then
(gelfr as TUrsat).v[1]:=DBGrid1.DataSource.DataSet.FIELDBYNAME('calsek').VALUE;
if (gelfr is Trezrnf)  then
(gelfr as Trezrnf).v[1]:=DBGrid1.DataSource.DataSet.FIELDBYNAME('calsek').VALUE;
***
end;
yıldızlar arasında ki kodları 1 satıra dusebilecek biri varmı?

arkadaslar cok pis hırs yaptım yardımıcı olurmunuz?
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

arkadaslar en azında olmuyor falan diyinde bende bosuna zaman kaybı yapmıyım..


cvp verirseniz cok sevinirim.. yorumlarda olabilir.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Ben ne yaptığını anlamadım. Böyle gereksiz bir işlem için bu kadar vaktini harcamaya gerek var mı? Birisine birşey ispat etmeye çalışıyorsan bilemem ancak optimizasyon bu yaptığın şey değil.
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

birsey kanıtlama niyetm yok amacım ne kadar az kodla daha fazla işlem yaparım muhabetindeyim

bu liste formunu ne kadar cok form kulanırsa o kadar (form carpı 2) satır eklemem gerekcek ama componetlere eklemem gerekmiyor cunki onları if siz bulabiliyorum
ve az kodla cok işlev olmus oluyor ama
değişkeni bulmak için dediğim gibi form*2 kod oluyor ve bu programcılıga
ters değilmi programı kodlarla sisirmek :evil:
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Her zaman değil. Kodun okunabilirliğini bozmadan optimize edeceksin. Basit bir proc optimizasyonu için 3 gün harcıyorsan, bu da pek akıllıca değil. Zamanla ve tecrübeyle bu gibi durumların üstesinden gelebilirsin.

Zannettiğin gibi programcılık en kısa kodu yazmak demek değildir.
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

hocam ben zaten olabilecegini yazdım forma nasıl yaptıgımı ve sadece hırs yaptım gectim ben o muhabeti projede ama

eger bilen biri varsa diye bakıyorum
sizce componentlere ulasmak için if kulanmıyorum
ama genel değişkene ulasmak için ise form sayısı * 2 satır yazıyorum .
ben bunun derdindeyim cunki ikiside formun elamanları

anlatabildimi!
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Nasıl yapabileceğini daha önce yazdım! Biraz üzerinde uğraş ve yapmaya çalış! :!:
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

Kod: Tümünü seç

///unit

unit MyForm;

interface
uses dialogs,classes,forms;
type
  TMyForm = class(TForm)
  public
    Referans : TMyForm;
    deg:string;
  end;
implementation

end.

// ana form
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Unit2,unit3,myform;

type
  TForm1 = class(TMyForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//from 2 goster

  form2.referans := self;
  form2.show;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
//from 3 goster
  Form3.Referans := self;
  form3.Show;
end;


end.

/// form 2 
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs,MyForm, StdCtrls;

type
  TForm2 = class(TMyForm)
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    Label2: TLabel;
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit3, Unit4;

{$R *.dfm}

procedure TForm2.FormShow(Sender: TObject);
begin
label1.Caption := self.Referans.Caption +' dan geldi';

end;

procedure TForm2.Button2Click(Sender: TObject);
begin
//ortak form
form4.referans := self;
form4.showmodal;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
//degeri goster
label2.caption:=deg;
end;
end.

//form 3 
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,myform;

type
  TForm3 = class(TMyForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses Unit4;

{$R *.dfm}

procedure TForm3.Button2Click(Sender: TObject);
begin
//ortak form
form4.referans := self;
form4.showmodal;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
//degeri goster
label2.caption:=deg;
end;

end.

// bu ortak form
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,MyForm;

type
  TForm4 = class(TMyForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

{$R *.DFM}

procedure TForm4.Button1Click(Sender: TObject);
begin
Referans.deg:=edit1.text;
close;
end;

end.
yardımlarınızdan dolayı tesekkur ediyorum.
bana yardımcı olan arkadasada (kendini biliyor) cok tesekkurler.


sonunda oldu ve sorun cozulmus oldu.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2384
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

İşlerimim yoğunluğundan yeni bakabildim, Bravo benim anlatmaya çalıştığımı tam anlamışsın :wink:
bir - iki öneride daha bulunayım, Component isimlerini bir standart vermek bence çok daha kullanışlı olur. "BTN_", "LBL_" vs gibi. Ben 3 harf ve Alt çizgi kullanıyorum. Avantaşı form üzerinde aramaktansa ObjectInspector dan daha kolay buluyorum. bu find compont içinde çok kullanışlı.
Diğer önerim ise TList class ını inceleyin çok kullanışlı bir class tır. Bunu denemek için bir projemde kullanmıştım, şöyleki, n tane Fatura formu, n tane irsaliye formu aynı anda açabiliyordu kullanıcı, Her açılanı ana menüde bir menüye ekliyordum ayrıca, kullanıcı rastgele birini aradan kapatabiliyordu, yada yenilerini açmaya devam ediyordu. Kim ne yapsın diyen olursa çiçek mezatlarında açık arttırma usulü çalışıyordu satış devam ederken biri geliyo biri gidiyordu.

Kod: Tümünü seç

I := MyTList.Add(TMyForm.Create(Application));
TMyForm(MyTList.Items[I]).Tag := I;
İlk satır Myformu create edip MyTList I ıncı değerine ekliyor,
İkinci satırda ise, find vs gibi kod yazıp herseferinde ilgili formu bulmak yerine Index numarasını kendisinin yani MyFormun tag ı yazıyorum.

Kod: Tümünü seç

TMyForm( MyTList.Items[ Self.Tag ]).Caption := Inttostr( Self.Tag )+'. Index';
busatır erişim için fikir versin diye. Daha fazla detay için bkz. Delphi Help TList

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla