Aleks133 Опубликовано 26 февраля, 2020 Поделиться Опубликовано 26 февраля, 2020 Вечер добрый, Сдаюсь,уже устал искать . Подскажите,кто знает, ну вот как они создали прогресс в TGrid и TStringGrid на демке? Спасибо. Цитата Ссылка на комментарий
0 Aleks133 Опубликовано 26 февраля, 2020 Автор Поделиться Опубликовано 26 февраля, 2020 (изменено) Я в шоке, нашел))Как все было просто.а вот как в stringgrid? И как сделать чтобы значение value бралось из другой колонки тойже сточки? procedure TForm1.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; var Value: TValue); begin if aCol = 1 then Value := 50; end; Изменено 26 февраля, 2020 пользователем Aleks133 Цитата Ссылка на комментарий
0 Aleks133 Опубликовано 27 февраля, 2020 Автор Поделиться Опубликовано 27 февраля, 2020 В общем весь день убил на поиски, так ничего и не нашел.Нашел все что хотел,но только все старое что уже не работает. 1.Как обращаться к ячейке, для чтения и записи?не через Grid1GetValue а с кнопки например так : procedure TForm1.Button4Click(Sender: TObject); val: TValue; str: string; begin val := Grid1.Columns[1].Controls.items[1].Data; //не работает так showmessage(val.tostring); end; 2. Как ячейке в столбце TProgressColumn присвоить значение(тоже с кнопки)? Пока все что у меня получилось сделать (по справке) это: private a, b, c: array of TValue; { Private declarations } public constructor Create(AOwner: TComponent); override; { Public declarations } end; const kat: array [0 .. 5] of string = ('Доходы', 'Расходы', 'Магазин', 'Продукты', 'Работа', 'Заправка'); sym_kat: array [0 .. 5] of Integer = (1000, 2000, 2500, 355, 1500, 1700); var Form1: TForm1; implementation constructor TForm1.Create(AOwner: TComponent); begin inherited; SetLength(a, Grid1.RowCount); SetLength(b, Grid1.RowCount); SetLength(c, Grid1.RowCount); end; procedure TForm1.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; var Value: TValue); var i: Integer; begin if ACol = 0 then Value := a[ARow]; if ACol = 1 then Value := b[ARow]; if ACol = 2 then Value := c[ARow]; end; procedure TForm1.Grid1SetValue(Sender: TObject; const ACol, ARow: Integer; const Value: TValue); var i: Integer; begin if ACol = 0 then a[ARow] := Value; if ACol = 1 then b[ARow] := Value; if ACol = 2 then c[ARow] := Value; end; //так заполняю данными procedure TForm1.Button3Click(Sender: TObject); var i: Integer; begin for i := 0 to Grid1.RowCount - 1 do begin a[i] := kat[i]; c[i] := sym_kat[i]; b[i] := sym_kat[i]; StringColumn3.UpdateCell(i); ProgressColumn2.UpdateCell(i); StringColumn4.UpdateCell(i); end; end; //так получу значение из третьего столбца третьей строки procedure TForm1.Button2Click(Sender: TObject); begin showmessage(c[2].ToString); //2500 end; Но при редактировании суммы, прогресс не меняется.Как это сделать, для меня пока загадка. Буду признателен за любую помощь. P.s.Не обязательно TGrid, можно и TStringGrid Цитата Ссылка на комментарий
0 Aleks133 Опубликовано 27 февраля, 2020 Автор Поделиться Опубликовано 27 февраля, 2020 Для stringgrid разобрался procedure TForm1.StringGrid1EditingDone(Sender: TObject; const ACol, ARow: Integer); begin StringGrid1.Cells[1, ARow] := StringGrid1.Cells[ACol, ARow]; end; а вот для грида не работает(( procedure TForm1.Grid1EditingDone(Sender: TObject; const ACol, ARow: Integer); begin Grid1.Columns[1].Controls.items[ARow].data := Grid1.Columns[ACol] .Controls.items[ARow].data; end; Цитата Ссылка на комментарий
Вопрос
Aleks133
Вечер добрый,
Сдаюсь,уже устал искать .
Подскажите,кто знает, ну вот как они создали прогресс в TGrid и TStringGrid на демке?
Спасибо.
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.