Komponentler İçinde Arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Komponentler İçinde Arama

Mesaj gönderen Hashirama »

Merhaba Arkadaşlar

Formun içindeki " label.text " lerde şu kodla arama yaptırıyorum, ancak edit1.text e içindeki label in tam içeriğini girmezsem bulamıyor. Sql de ki gibi " like " benzeri bir şey gerekiyor ama bi türlü bulamadım yardımcı olur musunuz ?

Şunu denedim bu da olmadı

Kod: Tümünü seç

 if (Acilis_Sayfasi.Components[ i ] as TLabel).text= QuotedStr('*'+edit1.Text+'*')

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
koordinat_X,koordinat_Y:double;
begin
  for i := 0 to Acilis_Sayfasi.ComponentCount-1 do
  if( Acilis_Sayfasi.Components[ i ] is TLabel )then
  begin
   if (Acilis_Sayfasi.Components[ i ] as TLabel).text=edit1.Text   then
    
    begin

      listbox1.Items.Add(
                         '  X:' +floattostr(((Acilis_Sayfasi.Components[i] as TLabel).Position.x)) +
                         '  Y:' +floattostr(((Acilis_Sayfasi.Components[i] as TLabel).Position.y)));


   //   (Components[i] as TLabel).StyledSettings :=
    //  (Components[i] as TLabel).StyledSettings - [TStyledSetting.ssFontColor];
    //  (Components[i] as TLabel).FontColor := TAlphaColors.red;
    end;
  end;
end;
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Komponentler İçinde Arama

Mesaj gönderen sabanakman »

Hashirama yazdı:

Kod: Tümünü seç

 if (Acilis_Sayfasi.Components[ i ] as TLabel).text= QuotedStr('*'+edit1.Text+'*')
yerine

Kod: Tümünü seç

 if (Pos(Acilis_Sayfasi.Components[ i ] as TLabel).text, edit1.Text)>0 then...
şeklinde bir deneyin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Komponentler İçinde Arama

Mesaj gönderen mrmarman »

SQL'deki like'in String operasyonlardaki karşılığı POS() fonksiyonudur.
POS() ile dönen değerin 1 veya daha büyük olması da ile başlayan mı yoksa kelimenin içinde mi olduğu sonucuna varmanızı sağlar.

Şöyle bir yapı ile örnekli olarak açıklayayım.

Kod: Tümünü seç

Var
  strDeger : String;
begin
  strDeger := 'Muharrem';

  //SQL'deki karşılığı '%rr%' şeklinde olması için
  if pos( 'rr', strDeger ) > 0 then ShowMessage('içinde "rr" var');
  //SQL'deki karşılığı 'rr%' şeklinde olması için
  if pos( 'Mu', strDeger ) = 1 then ShowMessage('"Mu" ile başlayan kelime');

  // Bunlar büyük küçük harf duyarlı aramadır. Bunu büyük küçük harfe duyarsız yapmak için
  // -sadece arama sırasında-  aranan da aranılan da
  // her ikisini de büyük harfe çevirerek sorgulayın
  //SQL'deki karşılığı '%rr%' şeklinde olması için
  if pos( AnsiUpperCase('rr'), AnsiUpperCase(strDeger) ) > 0 then ShowMessage('içinde "rr" var');
  //SQL'deki karşılığı 'rr%' şeklinde olması için
  if pos( AnsiUpperCase('mu'), AnsiUpperCase(strDeger) ) = 1 then ShowMessage('"mu" ile başlayan kelime');
end;
Resim
Resim ....Resim
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Re: Komponentler İçinde Arama

Mesaj gönderen Hashirama »

Cevaplarınız için Teşekkür ederim. Sorun çözülmüştür.
Cevapla