Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

TDateTimePicker в StringGrid

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

Code:
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ComCtrls;
 
type
TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   DateTimePicker1: TDateTimePicker;
   procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
     var CanSelect: Boolean);
   procedure FormCreate(Sender: TObject);
   procedure StringGrid1Exit(Sender: TObject);
   procedure DateTimePicker1Exit(Sender: TObject);
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
D: TDateTime;
begin
DateTimePicker1.Visible := True;
DateTimePicker1.BoundsRect := StringGrid1.CellRect(ACol, ARow);
D := DateTimePicker1.DateTime;
TryStrToDateTime(StringGrid1.Cells[ACol, ARow], D);
DateTimePicker1.DateTime := D;
DateTimePicker1.SetFocus;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
DateTimePicker1.Parent := StringGrid1;
DateTimePicker1.Visible := False;
DateTimePicker1.OnExit := DateTimePicker1Exit;
 
StringGrid1.OnSelectCell := StringGrid1SelectCell;
end;
 
procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
DateTimePicker1.Visible := False;
end;
 
procedure TForm1.DateTimePicker1Exit(Sender: TObject);
begin
with StringGrid1 do
   Cells[Col, Row] := DateTimeToStr(DateTimePicker1.DateTime);
end;
 
end.
Взято из http://forum.sources.ru
Автор: Smike

Перевод контента на русский язык:

Это код Delphi, который комбинирует TStringGrid и TDateTimePicker для возможности выбора даты из грида и ее отображения в DateTimePicker.

Разбор кода:

  1. Класс TForm1 имеет три компонента: StringGrid1, DateTimePicker1 и несколько обработчиков событий.
  2. В процедуре FormCreate DateTimePicker1 устанавливается как родитель для StringGrid1, а его видимость initially установлена в False.
  3. Обработчик события OnSelectCell для StringGrid1 установлен на StringGrid1SelectCell. Эта процедура вызывается при выборе ячейки в гриде.
  4. В процедуре StringGrid1SelectCell DateTimePicker1 делается видимым, а его прямоугольник устанавливается равным выбранной ячейке в гриде. Текущая дата/время DateTimePicker1 конвертируется в строку с помощью функции TryStrToDateTime и присваивается обратно соответствующей ячейке в гриде.
  5. Обработчик события OnExit для DateTimePicker1 установлен на DateTimePicker1Exit. Эта процедура вызывается при выходе из DateTimePicker, который скрывает ее и обновляет соответствующую ячейку в гриде с выбранной датой/временем с помощью функции DateTimeToStr.

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

Пример использования:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = #13) then // Enter key was pressed
    begin
      if StringGrid1.Col = 0 then // If the user selected a date
        begin
          try
            D := DateTimePicker1.DateTime;
            StringGrid1.Cells[0, StringGrid1.Row] := FormatDateTime('yyyy-mm-dd', D);
          except
            on E: EConvertError do
              MessageDlg('Invalid date format', mtWarning, [mbOK], 0);
          end;
        end;
    end;
end;

Таким образом, вам не нужно будет использовать DateTimePicker для выбора дат. Пользователь может выбирать даты напрямую в гриде, вводя их.

В статье описывается реализация функциональности отображения даты и времени в StringGrid с помощью компонента TDateTimePicker, которая позволяет выбирать дату и время для ячейки Grid.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TStringGrid и TDrawGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 02:35:32/0.0033140182495117/0