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 ?
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;
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.
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;