Перейти к содержанию
Fire Monkey от А до Я
  • 0

TProgressColumn на сетке


Aleks133

Вопрос

Рекомендуемые сообщения

  • 0

Я в шоке, нашел))Как все было просто.а вот как в stringgrid?

И как сделать чтобы значение value бралось из другой колонки тойже сточки?

procedure TForm1.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer;
  var Value: TValue);
begin
if aCol = 1 then
 Value := 50;
end;

 

Изменено пользователем Aleks133
Ссылка на комментарий
  • 0

В общем весь день убил на поиски, так ничего и не нашел.Нашел все что хотел,но только все старое что уже не работает.

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

 

888.png

Ссылка на комментарий
  • 0

Для 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;

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...