[Çözüldü ] FormAdı Component name

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

[Çözüldü ] FormAdı Component name

Mesaj gönderen Lord_Ares »

arkadaşlar şöyle bir procedure yapmak istedim fakat hatam var ama bulamadım bilen varsa yardımcı olabilirmi.
yapmak istediğim, şu formdaki şu edite göre ara

PROCEDURE ARADENEME(HANGIFORM:TFORM; HANGIEDIT:TspSkinEdit );
TSTOK.Filtered:=False;
TSTOK.FilterOptions:=[focaseinsensitive];
TSTOK.Filter:='Barkodu='+QuotedStr(HANGIFORM.Components.Name).HANGIEDIT.Text+'*');
TSTOK.Filtered:=True;
END;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: [Çözüldü ] FormAdı Component name

Mesaj gönderen Lord_Ares »

Arkadaşlar çözdüm. Kullanmak isteyenler için kodu veriyorum. Teşekkürler.

Kod: Tümünü seç

PROCEDURE ARA(HANGIFORM:TFORM;HANGIEDIT:TspSkinEdit;NEYEGORE:INTEGER);
BEGIN
                          Table1.Filtered:=False;
                          Table1.FilterOptions:=[focaseinsensitive];
                          Table1.Filter:='Adi='+QuotedStr(HANGIEDIT.Text+'*');
                         Table1.Filtered:=True;
 END;
Kullanım şekli

Kod: Tümünü seç

ARA(Form1,spSkinEdit2,1);
adnansirca
Üye
Mesajlar: 135
Kayıt: 14 Kas 2005 12:24

Re: [Çözüldü ] FormAdı Component name

Mesaj gönderen adnansirca »

Bir ara delphiabout sitesinden bununla ilgili bir fonksiyon bulmuştum.
Çok işe yarayan bir fonksiyon. (Uses deyimine iş bırakmıyor neredeyse :P ).

Kod: Tümünü seç

function FindComponentEx(const Name: string): TComponent;
var
  FormName: string;
  CompName: string;
  P: Integer;
  Found: Boolean;
  Form: TForm;
  I: Integer;
begin
  // Split up in a valid form and a valid component name
  P := Pos('.', Name);
  if P = 0 then
  begin
    raise Exception.Create('No valid form name given');
  end;
  FormName := Copy(Name, 1, P - 1);
  CompName := Copy(Name, P + 1, High(Integer));
  Found := False;
  // find the form
  for I := 0 to Screen.FormCount - 1 do
  begin
    Form := Screen.Forms[I];
    // case insensitive comparing
    if AnsiSameText(Form.Name, FormName) then
    begin
      Found := True;
      Break;
    end;
  end;
  if Found then
  begin
    for I := 0 to Form.ComponentCount - 1 do
    begin
      Result := Form.Components[I];
      if AnsiSameText(Result.Name, CompName) then
        Exit;
    end;
  end;
  Result := nil;
end;


Herhangi bir yerde kullanmak için ise;

Kod: Tümünü seç

var
sButton: TComponent;
begin
sButton := FindComponentEx('Form1.btn1');
    TButton(sButton).Click;
end;
Siz kendinize göre düzenlersiniz.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: [Çözüldü ] FormAdı Component name

Mesaj gönderen Lord_Ares »

oo çok teşekkürler süpermiş. Bende şöyle değiştirdim belki yararı olur.

Kod: Tümünü seç

   PROCEDURE ARAMA(DATA_ADI:TTable; ARANACAKALAN:STRING; HANGIFORM:TFORM; HANGIEDIT:TspSkinEdit);
BEGIN
  IF HANGIEDIT.Text='' THEN BEGIN
  DATA_ADI.Filtered:=False;
  END ELSE BEGIN
  DATA_ADI.Filtered:=False;
  DATA_ADI.FilterOptions:=[focaseinsensitive];
  DATA_ADI.Filter:=ARANACAKALAN+'='+QuotedStr(HANGIEDIT.Text+'*');
  DATA_ADI.Filtered:=True;
           END;
END;
Kullanımı
ARAMA(Table1,'Adi',MUSTERILERFRM,Adi);
Cevapla