PDA

View Full Version : حذف در StringGrid



qazwsx
شنبه 15 فروردین 1388, 00:08 صبح
سلام میخواستم یک ردیف انتخابی رو دز StringGrid خذف کنم چه کد ی رو باید انتخاب کنم

merced
شنبه 15 فروردین 1388, 01:51 صبح
با فرستادن رديفهاي زيرش به يكي بالاتر


procedure DeleteRow(TheStringGrid: TStringGrid; ARow: Integer);
var i: Integer;
begin
with TheStringGrid do
begin
for i := ARow to RowCount-2 do
Rows[i].Assign(Rows[i+1]);
RowCount := RowCount - 1
end;
end;


// Call
DeleteRow(StringGrid1 , StringGrid1.Row) ;

qazwsx
شنبه 15 فروردین 1388, 14:56 عصر
با فرستادن رديفهاي زيرش به يكي بالاتر


procedure DeleteRow(TheStringGrid: TStringGrid; ARow: Integer);
var i: Integer;
begin
with TheStringGrid do
begin
for i := ARow to RowCount-2 do
Rows[i].Assign(Rows[i+1]);
RowCount := RowCount - 1
end;
end;


// Call
DeleteRow(StringGrid1 , StringGrid1.Row) ;



من این کار را انجام دادم حذف درست بود اما زمانی که دو باره ردیفی را در گرید ایجاد میکردم ردیف قبلب که حذف شده بود دوباره سر جایش می آمد و ردیف که باید اضافه شود بعد از آن.

merced
یک شنبه 16 فروردین 1388, 01:10 صبح
شما احتمالا موقع اضافه كردن دوباره اطلاعات رو از جايي مي خونيد. يعني گريد رو خالي مي كني و از نو پر مي كني
موقع حذف كردن، از گريد داري حذف مي كني ولي منبع حذف نمي كني.

وگرنه محاله كه به روش بالا حذف كني و دوباره بياد!!
مي خواي كدت رو بذار

qazwsx
یک شنبه 16 فروردین 1388, 15:01 عصر
شما احتمالا موقع اضافه كردن دوباره اطلاعات رو از جايي مي خونيد. يعني گريد رو خالي مي كني و از نو پر مي كني
موقع حذف كردن، از گريد داري حذف مي كني ولي منبع حذف نمي كني.

وگرنه محاله كه به روش بالا حذف كني و دوباره بياد!!
مي خواي كدت رو بذار
ببینید من یک برنامه دارم که فاکتور میزنه ماله رستورانه حالا من یه تکه کد دارم که اطلاعات رو به گرید میبره با کد زیر


procedure TForm13.Button3Click(Sender: TObject);
var
a,a1,strTemp,strTemp1,p:string;
f,k,f1,k1,f2,c:integer;
begin
a:='';
k:=0;
f:=0;
c:=0;
if v=1 then
begin
s.Cells[c,v]:=edit2.Text;
s.Cells[c+1,v]:=edit4.Text;
s.Cells[c+2,v]:=edit3.Text;
s.Cells[c+3,v]:=edit5.Text;
edit6.Text:=(edit5.Text);
edit2.Text:='';
edit3.Text:='';edit4.Text:='';edit5.Text:='';

end
else
begin


s.Cells[c,v]:=edit2.Text;
s.Cells[c+1,v]:=edit4.Text;
s.Cells[c+2,v]:=edit3.Text;
s.Cells[c+3,v]:=edit5.Text;
a:=edit5.Text;
f:=length(a);
for k:=0 to f do
if (a[k]=',') then
strcopy(@a[k],@a[k+1]);
a1:=edit6.Text;
f1:=length(a1);
for k1:=0 to f1 do
if (a1[k1]=',') then
strcopy(@a1[k1],@a1[k1+1]);


edit6.Text:=inttostr(strtoint(a1)+strtoint(a));
strTemp := Edit6.Text;
while Pos(',',strTemp) > 0 do
Delete(strTemp,Pos(',',strTemp),1);
Edit6.Text := FormatFloat('#,0', StrToInt64(strTemp));
Edit6.SelStart := Length(Edit6.Text);
edit2.Text:='';
edit3.Text:='';edit4.Text:='';edit5.Text:='';

end;
v:=v+1;
s.RowCount:=v;

end;

حالا وقتی حذف می کنم با کدی که گفتین و دوباره چیزی رو اضافه میکنم اطلاعاتی رو که حذف کردم دوباره میاد سره جاش

merced
دوشنبه 17 فروردین 1388, 01:11 صبح
موقع DeleteRow از متغير v يك واحد كم كن.. درسته .