1 (edited by pha1984 2015-11-11 09:29:48)

Topic: TableGrid

Ув. Дмитрий.
1. Надо чтобы в гриде надпись каждой колонки показалась вертикально, как это прописать скриптом? Смотрите в прикр. файл.
2. Можно ли сделать такое приложение в вашей программе? смотрите в прикр. файл.

Re: TableGrid

Это можно будет сделать в версии 2.2

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    Form1.TableGrid1.HeaderSize := 100; // высота заголовка
    Form1.TableGrid1.Columns[0].Header.Orientation := hoVertical;
end;
Dmitry.

Re: TableGrid

Спс. А когда выйдет версия 2.2?

Re: TableGrid

не могу точно сказать, в течении недели.

Dmitry.

5 (edited by Rebrovvv 2015-11-11 20:05:24)

Re: TableGrid

Нужно разместить три таблицы на одной форме со включенным свойством Sizeable. При развертывании формы на весь экран таблицы разъезжаются, смотрите скриншот. https://yadi.sk/i/Pxo7h_likPjV5

Re: TableGrid

Rebrovvv
Если вам необходимо, чтобы все три грида увеличивались в размере и не наезжали друг на друга, то это можно сделать только с помощью скрипта, необходимо создать событие OnResize для формы (событие срабатывает при изменении размера формы) и в нем рассчитывать размеры и положение гридов на форме в зависимости от размера окна (Form1.Width и Form1.Height)

Dmitry.

7 (edited by wertyby 2015-11-24 19:09:01)

Re: TableGrid

Доброго вечера, Дмитрий - может подскажете на примере данного кода возможна ли реализация вывода значения из "грида" (содержимого одного поля таблицы не выводящегося по умолчанию  в "грид") при клике по строке в интересующей записи в другой "грид" и в другом же окне. Вывод в поле "мемо" и "label" работает но "label" не устроил невозможностью в случае необх. прокрутки при выводе большого блока текста, а "мемо" отсутствием скрола.
Головень подумала о "гриде" в 1 колонку (фактически даже нужна 1 ячейка) но как это реализовать уже не соображает :-). Заранее спасибо.

procedure Form1_GridEmployees_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
      frmVivod.memoOpisanie.Text := SQLExecute ('SELECT opisaniesorta FROM sort WHERE id='+Form1.GridEmployees.sqlValue);//вывод в мемо
      
frmVivod.DBImage1.Clear;
    frmVivod.DBImage1.LoadFromDatabase('sort', 'photo', Form1.GridEmployees.dbItemID);//вывод в картинки 
     
frmVivod.labelName.Caption := SQLExecute ('SELECT opisaniesorta  FROM sort WHERE id='+Form1.GridEmployees.sqlValue); //вывод в лэбел 
   
end;

Re: TableGrid

wertyby
так вы можете включить скролл для Memo, код можете разместить в событии OnShow главной формы

Form1.Memo1.ScrollBars := ssBoth; // включение горизонтального и вертикального скрола
Dmitry.

Re: TableGrid

Как всегда спасибо. Это наилучший вариант.

Re: TableGrid

Ув. Дмитрий. Есть таблица базы данных. Вот так выглядит:
hamagi
USOYear        ДАТА

На форме1 имеется грид в котором показывается USOYear.
Как написать скрипт чтобы при условии если Now - USOYear > 5 то цвет ячейки этой строки было красным?
Это надо и при OnShow и при OnChange.

Re: TableGrid

попробуйте  так, необходимо использовать только OnChange

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i, c: integer;
   sCell: string;
begin
     c := Form1.GridEmployees.RowCount - 1;
     for i := 0 to c do
     begin
         sCell := Form1.GridEmployees.Cells[0,i];
         if ValidDate(sCell) then
             if (Now - StrToDate(sCell)) > 5 then
                 Form1.GridEmployees.Cell[0,i].Color := clRed

     end;
end;
Dmitry.

Re: TableGrid

но здесь нет запроса типа SQLExecute('Select USOYear from hamagi where id= '+Form1.TableGrid1.sqlValue);
я поставил ваш скрипт но увы не работает.

Re: TableGrid

зачем запрос, если дата есть уже в гриде (USOYear)

обратите внимние на Cells[0,i], где 0 - номер столбца в котором содержится дата

Dmitry.

14 (edited by pha1984 2015-11-27 15:07:25)

Re: TableGrid

ок. я понял. Я бы хотел поконкретнее обяснить суть. В поле USOYear указывается дата прохождения квалификации (УСО) сотрудника. Сотрудник обязан проходить квалификацию каждые 5 лет. Т.е. если он последний раз проходил УСО 22.12.2013 то в следущий раз он должен пройти 22.12.2018 года. И вот если разница этих дат будет больше 5 то ячейка должна быть красным. Также сотрудник должен пройти квалификацию после 5-ти лет окончания университета. Например он закончил универ 27.11.2005 года то он должен пройти квалификацию 27.11.2015 года. На форме также имеется ячейка где указывается дата окончания универа.
У меня возникла проблема. У меня сегодняшняя дата 27.11.2015 а дата USO 22.12.2013, т.е. разница в годах грубо 2, а она меньше 5. Цвет ячейки все равно красный. Почему так?

Re: TableGrid

приложите пожалуйста ваш проект либо отправьте его на support@drive-software.com

Dmitry.

16 (edited by pha1984 2015-11-27 15:15:12)

Re: TableGrid

отправил, тема USO, также серийник к проге.

Re: TableGrid

код будет таким

     c := Form1.TableGrid1.RowCount - 1;
     for i := 0 to c do
     begin
         sCell := Form1.TableGrid1.Cells[11,i];
         if ValidDate(sCell) then
             if (Now > StrToDate(sCell)) and (YearsBetween(Now, StrToDate(sCell))>5) then
                 Form1.TableGrid1.Cell[11,i].Color := clRed
     end;
Dmitry.

Re: TableGrid

не получается. Сотрудник окончил в 2013 году. Значит ему пока не надо проходит УСО. т.е. при добавлении сотрудника если он закончил в 2013 году, пункт год прохождения УСО будет пустым. Что то тут не так. Скрипт не работает.

Re: TableGrid

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

Dmitry.

Re: TableGrid

ок. в скрипте написано
if validdate(sCell) then
......
validdate - это значит если дата вставлена?

Re: TableGrid

ValidDate - это функция, проверяет соотвествует ли строка правильному формату даты, чтобы в последствии эту строку можно было преобразовать в тип TDateTime (StrToDate) чтобы можно было делать вычисления с датами.

Dmitry.

Re: TableGrid

значит если дата пустая то она не является Validdate?

Re: TableGrid

Ув. Дмитрий. У меня никак не получается. Помогите со скриптом.

Re: TableGrid

Я могу помочь только с конкретными вопросами, я не смогу сделать за вас.

Dmitry.

Re: TableGrid

pha1984 wrote:

значит если дата пустая то она не является Validdate?

Да.

Dmitry.