srtinggrrid siralama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
srtinggrrid siralama
merhaba..
stringgriddeki degerleri lenght fonksiyonu ile nasil karakter sayisi cok olandan az olana dogru siralayabilirim.
stringgriddeki degerleri lenght fonksiyonu ile nasil karakter sayisi cok olandan az olana dogru siralayabilirim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: srtinggrrid siralama
Bu işlem için TStringList sınıfının CustomSort metodundan faydalanmak gerekecek.gibi bir kodla bilgileri farklı bir listeye atıp o sınıfın sıralama özelliği kullanıp sadece uzunluk dikkate alınarak sıralama işlemi gerçekleşir.
Kod: Tümünü seç
function Kiyasla(List: TStringList; Index1, Index2: Integer): Integer;
begin
Index1:=Length(List[Index1]);
Index2:=Length(List[Index2]);
if Index1>Index2 then Result:=1 //ilk sıradaki eleman uzun
else if Index1<Index2 then Result:=-1 //ilk sıradaki eleman kısa
else Result:=0; //<-her iki uzunluk eşit
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var Liste:TStringList;
begin
Liste:=TStringList.Create;
try
Liste.Assign(StringGrid1.Cols[1]);
Liste.CustomSort(Kiyasla);
StringGrid1.Cols[1].Assign(Liste);
finally
Liste.Free;
end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: srtinggrrid siralama
tesekkurler oldu fakat soyle bir sorun var. stringgrid1 2 sutunlu ve 2. sutundakileri kucukten buyuge aldi. fakat onun karsiligi olan 1. stundakilerle birlikte olmasi lazim. ve 1. sutun asil alinmasi lazimsiralamada.
soyle bir sey oluyor o zaman sizin yapmis oldugunuz code da.
ali erkek
veli erkek
ayşe kız
karabaş köpek
oaln stringgridde
ali kız
ayse erkek
gibi bir sey cikiyor.
soyle olmasi lazim
karabas köpek
veli erkek
ali erkek
birinci sutuna gore sirlama yapip ikinci sutunuda yaninda tasimasi lazim.
soyle bir sey oluyor o zaman sizin yapmis oldugunuz code da.
ali erkek
veli erkek
ayşe kız
karabaş köpek
oaln stringgridde
ali kız
ayse erkek
gibi bir sey cikiyor.
soyle olmasi lazim
karabas köpek
veli erkek
ali erkek
birinci sutuna gore sirlama yapip ikinci sutunuda yaninda tasimasi lazim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: srtinggrrid siralama
O zaman kendi sıralama kodlarını geliştirmen gerek.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: srtinggrrid siralama
peki tesekkur ederim. acaba siraladigimda 1. ve 2. sutunu birlikte nasil tasirim.
Re: srtinggrrid siralama
stringgridin cells değeri direk string verdiğinden doğrudan taşıma gibi bir durum yok.
ama bir geçici değişken üzerinden takas yapabilirsiniz.
örneğin 2. satırla 3. satır yer değiştirecekse
yani klasik bubble sort mantığı...
ama bir geçici değişken üzerinden takas yapabilirsiniz.
örneğin 2. satırla 3. satır yer değiştirecekse
Kod: Tümünü seç
for i:=0 to sutunsayisi-1 do
begin
gecici:=sg.cells[i,1];
sg.cells[i,1]:=sg.cells[i,2];
sg.cells[i,2]:=gecici;
end;
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Re: srtinggrrid siralama
asagidaki bu code cok işime yaradi ve calisti. fakat soyle bir seyi bu code uzerinde nasil yaparim.
siralarken ilk tab isaretine kadar olan uzunlugu varsaysin, asıl alsın.
siralarken ilk tab isaretine kadar olan uzunlugu varsaysin, asıl alsın.
sabanakman yazdı:Bu işlem için TStringList sınıfının CustomSort metodundan faydalanmak gerekecek.gibi bir kodla bilgileri farklı bir listeye atıp o sınıfın sıralama özelliği kullanıp sadece uzunluk dikkate alınarak sıralama işlemi gerçekleşir.Kod: Tümünü seç
function Kiyasla(List: TStringList; Index1, Index2: Integer): Integer; begin Index1:=Length(List[Index1]); Index2:=Length(List[Index2]); if Index1>Index2 then Result:=1 //ilk sıradaki eleman uzun else if Index1<Index2 then Result:=-1 //ilk sıradaki eleman kısa else Result:=0; //<-her iki uzunluk eşit end; procedure TForm1.BitBtn1Click(Sender: TObject); var Liste:TStringList; begin Liste:=TStringList.Create; try Liste.Assign(StringGrid1.Cols[1]); Liste.CustomSort(Kiyasla); StringGrid1.Cols[1].Assign(Liste); finally Liste.Free; end; end;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: srtinggrrid siralama
Neye göre sıralama yapılacaksa Kiyasla fonksiyonunu ona göre yazmalısın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: srtinggrrid siralama
nasıl yapacagim onu soruyorum. bilemiyorum.