Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 dateTimePicker - обнуление!  [new]
sanich
Member

Откуда: Rostov-On-Don
Сообщений: 799
проблема следующаяя: хочу дату сделать пустой,
это никак не получается, при потере фокуса
dateTimePicker подставляет или текущую дату или 30.12.1899

Кто нибудь знает как обнулить дату?
26 фев 06, 20:23    [2392454]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62926
Это и есть нулевая дата. Дата пустой быть не может. Так же как и Integer.
26 фев 06, 20:28    [2392474]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
botpride
Guest
"Обнулить" дату в буквальном смысле нельзя - но можно включить галочку рядом с этим компонентом (ShowCheckBox:=true), и ее снятие пользователем и будет означать "отсутствие даты", если необходимо именно такое ее состояние.
26 фев 06, 21:56    [2392598]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Obrazer
Member

Откуда: Смоленск
Сообщений: 1419
Я для этихз целей пользую datatime (не помню как точно называется) из библиотеки EhLib. Он для работы с БД, но и без БД нормально работает.
Его свойству Value можно присвоить и как дату, так и Null. И Rx тоже вроде так умеет...
26 фев 06, 23:29    [2392713]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62926
Obrazer
Я для этихз целей пользую datatime (не помню как точно называется) из библиотеки EhLib. Он для работы с БД, но и без БД нормально работает.
Его свойству Value можно присвоить и как дату, так и Null. И Rx тоже вроде так умеет...

Rx Null не может присвоить, для данного типа это вообще не возможно.
Rx резервирует одно из значений даты для особого отображения.
Это нулевая дата. Но это не Null и мы при этом лишаеся одной даты в летоисчислении.
26 фев 06, 23:47    [2392744]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Obrazer
Member

Откуда: Смоленск
Сообщений: 1419
Eh точно может работать с Null.
А вот Rx не знаю...
В принципе потеря одной даты "в летоисчислении" (такой далекой) для большинства прикладных задач будет незаметна.
27 фев 06, 00:26    [2392775]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Obrazer
Member

Откуда: Смоленск
Сообщений: 1419
Eh точно может работать с Null.
А вот Rx не знаю...
В принципе потеря одной даты "в летоисчислении" (такой далекой) для большинства прикладных задач будет незаметна.
27 фев 06, 00:27    [2392777]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Shultze
Member

Откуда: СПб
Сообщений: 382
Заменили самописным компонентом, который похож на Datetimepicker, при клике на комбобокс открывается календарик, но можно стереть значение из строки. ИМХО чекбокс в стандартной виндузовой реализации неудобен, пользователю дополнительно мозззг надо напрягать, а он этого не любит
27 фев 06, 00:43    [2392794]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Dremuchij Forester
Guest
sanich
хочу дату сделать пустой

Не моё. Где-то взял.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    DateTimePicker1: TDateTimePicker;
    ButtonClear: TButton;
    ButtonNA: TButton;
    procedure DateTimePicker1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButtonClearClick(Sender: TObject);
    procedure ButtonNAClick(Sender: TObject);
  private
    BlankDate:  BOOLEAN;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

USES
  CommCtrl;   // To set format of TDateTimePicker

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
   DateTime_SetFormat(DateTimePicker1.Handle, pChar('dd.MM.yyyy'));
   BlankDate := FALSE;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // In D6 or D7, set Format to '' in IDE, but use this in D3 to D5:
  DateTime_SetFormat(DateTimePicker1.Handle, pChar(''''''));
  BlankDate := TRUE;
end;

procedure TForm1.ButtonClearClick(Sender: TObject);
begin
  DateTime_SetFormat(DateTimePicker1.Handle, pChar(''''''));
  BlankDate := TRUE;
end;

procedure TForm1.ButtonNAClick(Sender: TObject);
begin
  DateTime_SetFormat(DateTimePicker1.Handle, pChar('''Not Assigned'''));
  BlankDate := TRUE;
end;

end.
27 фев 06, 08:32    [2392971]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
lenash
Member

Откуда:
Сообщений: 500
Я использовала выше описанную процедуру для очищения datetimepicker
Мне теперь нужно составить условие, если datetimepicker не пусто, то....????
пишу так
if (dtpDate.Date<>Null) and (dtpDatePo.Date<>Null) then
.....
dtpDatePo пустой, однако попадает в это условие
5 июл 06, 12:41    [2844591]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62926
lenash
Я использовала выше описанную процедуру для очищения datetimepicker
Мне теперь нужно составить условие, если datetimepicker не пусто, то....????
пишу так
if (dtpDate.Date<>Null) and (dtpDatePo.Date<>Null) then
.....
dtpDatePo пустой, однако попадает в это условие

О каком сравнение с Null может идти речь. Никогда
    Null =     Null -> Null
Not Null =     Null -> Null
    Null = Not Null -> Null
Not Nul l= Not Null -> Null
Может тебе надо сделать выборку из базы, тогда
Fld IS [NOT] NULL
5 июл 06, 23:13    [2847597]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
lenash
Member

Откуда:
Сообщений: 500
botpride

Guest "Обнулить" дату в буквальном смысле нельзя - но можно включить галочку рядом с этим компонентом (ShowCheckBox:=true), и ее снятие пользователем и будет означать "отсутствие даты", если необходимо именно такое ее состояние.


На форме две даты, по которым нужно осуществлять поиск в базе
Мне нужно, если указана первая дата, то выполнять поиск записей соответствующих только этой дате, а если две даты указаны , то тогда выбирать записи по этому диапозону

Код:
if (dtpDate.ShowCheckbox=true) and (dtpDatePo.ShowCheckbox=false) then
begin
ssql1:=ssql1+' and convert(varchar,date_edit,104)='+chr(39)+datetostr(dtpDate.Date)+chr(39);
end;
if (dtpDate.ShowCheckbox=true) and (dtpDatePo.ShowCheckbox=true) then
begin
ssql1:=ssql1+' and convert(varchar,date_edit,104)>='+chr(39)+datetostr(dtpDate.Date)+chr(39)+' and convert(varchar,date_edit,104)<='+chr(39)+datetostr(dtpDatePo.Date)+chr(39);
end;

У меня получается что выполняется всегда второе условие. Что если, снять галку в компоненте, то дата отсутствует, почему тогда у меня все равно выполняется условие???
6 июл 06, 04:27    [2847915]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: dateTimePicker - обнуление!  [new]
Taxall
Guest
lenash
Я использовала выше описанную процедуру для очищения datetimepicker
Мне теперь нужно составить условие, если datetimepicker не пусто, то....????
пишу так
if (dtpDate.Date<>Null) and (dtpDatePo.Date<>Null) then
.....
dtpDatePo пустой, однако попадает в это условие

а BlankDate для чего по твоему?
16 янв 09, 13:44    [6696443]     Ответить | Цитировать Сообщить модератору
 Re: dateTimePicker - обнуление!  [new]
CorwinFW
Member

Откуда:
Сообщений: 196
Еще такое есть

dateTimePicker.Format := 'g';

Таких фишечек рюшечек очень много тут
17 янв 09, 10:57    [6700208]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить