Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Раюбота C Stringgrid

Автор: Mr.Dmitry 30.10.2006 21:36

Есть поле StringGrid я хочу зделать чтоб по выделегию какой либо ячейке нажатию кнопки Редактировать запись можно было изменить уже введенные записи в во всей строке где была выделенна ячейка (тоесть появлялася форма в котрой в полях edit були введены те данные которые были введены в строке и при их измение они бы и менялись в StringGrid в тойже строке.)
Также при если была бы веделенна ячейка и нажата кнопка Удалить то удалялась вся строка где была выделенная ячейка. При этом нумерация ячеек поттягивалась (была нумерация 1,2,3,4,5,6,7 удалиле 3 стало 1,2,4,5,6,7 нужно чтоб все стало попарятку. нумерация происходит сама при помощи наращивания в переменную kol при добовлении новой записи.)
Заранее спасибо!

Автор: Reptile 31.10.2006 21:02

Так я не понял в чем проблема? Создаеш отдельную форму, при нажатии на кнопку форма отображается, а поля заполняются значениями из Grid.
Вот пример

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i : Integer;
begin
i := Form1.StringGrid1.Row;
Form2.Edit1.Text := Form1.StringGrid1.Cells[1,i];
Form2.Edit2.Text := Form1.StringGrid1.Cells[2,i];
Form2.ShowModal;
Form1.StringGrid1.Cells[1,i] := Form2.Edit1.Text;
Form1.StringGrid1.Cells[2,i] := Form2.Edit2.Text;
end;

Это конечно коряво но за 2-мин. smile.gif

Автор: мисс_граффити 31.10.2006 21:17

а для второго, соответственно, всю инфу из строк ниже выбранной поднимаешь, а потом уменьшаешь количество строк всего грида.

Автор: Mr.Dmitry 1.11.2006 2:03

Большое спасибо!!!
Появился есче один вопрос Я делаю сортировку вот кот:

procedure TForm1.SortABC(col: integer);
var
i,j,p:integer;
s:string;
EndSort:boolean; //закончить ли сортировку
begin
p:=col;
repeat
EndSort:=true;
with StringGrid1 do
begin
for i:=2 to RowCount-1 do
if MoreABC( Cells[p,i], Cells[p, i-1]) then
begin
EndSort:=false;
for j:=0 to ColCount-1 do //меняет местами строки
begin
s:=Cells[j,i-1];
Cells[j,i-1]:=Cells[j,i];
Cells[j,i]:=s;
end;
end;
end;
until EndSort;
end;

procedure TForm1.N11Click(Sender: TObject);
begin
SortABC(0);
end;

но она делаеться не совсем так как хотелось бы есть 22 записи вот что получаеться при сортировки
1=>1
2=>10
3=>11
4=>22
5=>3
6=>4
7=>5
как зделать чтоб сортировка происходила в правеоьном порятке??


М
Теги !


Автор: volvo 1.11.2006 17:18

В функции MoreABC сравнивай не строки, а числа, которые они представляют (можно использовать StrToInt)...

Как выглядит у тебя эта функция?

Автор: Reptile 1.11.2006 17:20

А код функции MoreABC можно?
Я поставил

if (StrToInt(Cells[p,i]) < StrToInt(Cells[p, i-1])) then

И У меня все работает smile.gif
Это если нужно целые числа сортировать, а если строки то без StrToInt.

Автор: Mr.Dmitry 2.11.2006 2:06

Все есче раз всем спасибо!