Шахматка на Дельфи

NeVajno2008
Дата: 12.06.2009 12:07:46
Господа программисты решаю одну проблему и никак ее сделать не могу.
Суть ссотоит в том чтобы нарисовать шахматку, для программы для отеля, там нужно чтобы по строкам были номера, а столбцы были занят или бронирован. Примерно каковы решение этой проблемы.

Заранее спасибо
Дураг
Дата: 12.06.2009 12:11:08
нарисовать - это Canvas
но вообще люди используют например Fast Report
для отчетов
так что конкретно интересует?
OracleLover
Дата: 12.06.2009 12:16:55
NeVajno2008
Господа программисты решаю одну проблему и никак ее сделать не могу.
Суть ссотоит в том чтобы нарисовать шахматку, для программы для отеля, там нужно чтобы по строкам были номера, а столбцы были занят или бронирован. Примерно каковы решение этой проблемы.

Заранее спасибо


В простенькой БД можно хранить данные о занятых\незанятых номерах, а показывать в виде обычного грида - на пересечении столбца и строки ставить например * если занята и оставлять пусто если нет.
Кроик Семён
Дата: 12.06.2009 12:48:51
Кроик Семён
Дата: 12.06.2009 12:54:44
P.S.

вот один из примеров. Скачай и посмотри, как оно сделано. Определись, что нравится, а что нет.

  • Гость (Автоматизация портье, администратора гостиницы, отеля, базы отдыха)
  • LSV
    Дата: 12.06.2009 13:08:44
    Я например, динамически добавлял колонки в датасете и ставил событие ОнКалкФилд, где по двум параметрам (ключ строки, ключ столбца) извлекал из другого д/с нужное значение.
    Типо так:
    procedure хххх.AddCalcFields(DataSet: TDataSet);
    var x:integer;
        zz: array[0..100] of TFloatField;
    begin
    DataSet.FieldDefs.Update;
    for x := 0 to DataSet.FieldDefs.Count - 1 do
        DataSet.FieldDefs.Items[x].CreateField(DataSet);
    x:=0;
    fmain.qCalendar.Open;
    while not fmain.qCalendar.EOF do begin
      zz[x]:=TFloatField.Create(self);
      zz[x].Name:='Cube'+IntToStr(x);
      zz[x].Displaylabel:=sl[x];
      zz[x].FieldName:='Cube'+IntToStr(x);
      zz[x].DataSet:=DataSet;
      zz[x].FieldKind:=fkCalculated;
      fmain.qCalendar.Next;
      inc(x);
    end;//while
    fmain.qCalendar.Close;
    end;