İyi akşamlar...
DateTimePickere style özelliği olmadığında görselde, göze hoş görünmüyor, combobox da style özelliği csDropDownList daki gibi DateTimePickere nasıl bir uygulama yapabilirim...
DateTimePickere Combobox style gibi görsel verme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: DateTimePickere Combobox style gibi görsel verme
Şimdi söyleyeceğim şeyi bir öneri olarak sayma, sadece vakit geçiriyorum.
Bir ComboBox'u DateTimePicker ile birlikte kullanmak üzere bir test... Flicker yapıyor ama başka eklentilerle bu da aşılabilir. Şu an aklıma ilk bu geldi...
Bir ComboBox'u DateTimePicker ile birlikte kullanmak üzere bir test... Flicker yapıyor ama başka eklentilerle bu da aşılabilir. Şu an aklıma ilk bu geldi...

Kod: Tümünü seç
procedure TForm1.ComboBox1DropDown(Sender: TObject);
Var
P:TSmallPoint;
begin
With TComboBox(Sender) do begin
Visible := False;
DateTimePicker1.Top := Top;
DateTimePicker1.Left := Left;
DateTimePicker1.Width := Width;
DateTimePicker1.Visible := True;
// DateTimePicker'in mouse ile tıklanan sondaki yerini hedef alıcaz...
P.Y := DateTimePicker1.Height div 2;
P.X := DateTimePicker1.Width - P.Y;
PostMessage(DateTimePicker1.Handle,WM_LBUTTONDOWN,
MK_LBUTTON, longint(p) );
PostMessage(DateTimePicker1.Handle,WM_LBUTTONUP,
MK_LBUTTON, longint(p) );
end;
end;
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
begin
ComboBox1.Items.Text := DateTimeToStr( DateTimePicker1.DateTime );
ComboBox1.ItemIndex := 0;
DateTimePicker1.Visible := False;
ComboBox1.Visible := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DateTimePicker1.Visible := False;
DateTimePicker1.DateTime := Now;
ComboBox1.Style := csDropDownList;
ComboBox1.Items.Text := DateTimeToStr( DateTimePicker1.DateTime );
ComboBox1.ItemIndex := 0;
end;
Re: DateTimePickere Combobox style gibi görsel verme
Aklıma comcobox da döngü kullanarak 30 günlük bir tarih oluşturma yöntemi geldi, fakat bir türlü çalıştıramadım.

Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
begin
for i := ComboBoxDate.Items.Count - 30 downto 0 do
begin
ComboBoxDate.Items.BeginUpdate;
ComboBoxDate.Items.Clear;
ComboBoxDate.Items.Add(DateTimeToStr(Date));
ComboBoxDate.Items.Add(DateTimeToStr(Date + i));
ComboBoxDate.Items.EndUpdate;
ComboBoxDate.ItemIndex := 0;
end;
end;
Re: DateTimePickere Combobox style gibi görsel verme
Senin için bir çalışma...
Kullanırken, hangi aya ait günlük döküm alacaksan, o aydan bir tarih girmen referans için yeterli.
İşlem sonunda otomatik olarak referans tarihe odaklanıyor, dilersen son satırı silebilir yerine ItemIndex := 0 diyebilirsin. Sana kalmış.
Kullanımı :
Kullanırken, hangi aya ait günlük döküm alacaksan, o aydan bir tarih girmen referans için yeterli.
İşlem sonunda otomatik olarak referans tarihe odaklanıyor, dilersen son satırı silebilir yerine ItemIndex := 0 diyebilirsin. Sana kalmış.
Kod: Tümünü seç
Uses DateUtils;
procedure TarihDoldur( RefTarih:TDate; ComboBoxDate:TComboBox );
var
dtTar : TDate;
begin
dtTar := Int( DateUtils.StartOfTheMonth( RefTarih ) );
ComboBoxDate.Items.BeginUpdate;
ComboBoxDate.Items.Clear;
while INT(dtTar) <= INT(DateUtils.EndOfTheMonth( RefTarih )) do
begin
ComboBoxDate.Items.Add( DateToStr( dtTar ) );
dtTar := DateUtils.IncDay( dtTar, 1 );
end;
ComboBoxDate.Items.EndUpdate;
ComboBoxDate.ItemIndex := ComboBoxDate.Items.IndexOf( DateToStr( Int(RefTarih) ) );
end;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
TarihDoldur( now, ComboBox1 );
end;
Re: DateTimePickere Combobox style gibi görsel verme
Merhabalar.
MrMarman hocamızın kodlarını da kullanarak TEdit türevi bir class oluşturdum umarım işinize yarar. Isterseniz modifiye ederek bileşen haline de getirebilirsiniz.

Bütün Dökümanlar:
https://yadi.sk/d/3WAdKvcngkbbV
MrMarman hocamızın kodlarını da kullanarak TEdit türevi bir class oluşturdum umarım işinize yarar. Isterseniz modifiye ederek bileşen haline de getirebilirsiniz.

Bütün Dökümanlar:
https://yadi.sk/d/3WAdKvcngkbbV
Re: DateTimePickere Combobox style gibi görsel verme
Eline sağlık güzel çalışma.
Küçük bir ekleme faydalı olabilir gibi... Eğer tarih içeriği mevcut ise yani en az ikinci defa tarih paneli açılıyorsa, o zaman referansı NOW'dan değil de mümkünse (Try/Except) TEXT'deki tarihten alması kullanıcının elini kolaylaştırır diye değerlendiriyorum.
Aşağıdaki eklenen kısım yani... Başarılar.
Küçük bir ekleme faydalı olabilir gibi... Eğer tarih içeriği mevcut ise yani en az ikinci defa tarih paneli açılıyorsa, o zaman referansı NOW'dan değil de mümkünse (Try/Except) TEXT'deki tarihten alması kullanıcının elini kolaylaştırır diye değerlendiriyorum.
Aşağıdaki eklenen kısım yani... Başarılar.
Kod: Tümünü seç
procedure TMyDatePicker.OnTarihBoxGoster(Sender: TObject);
begin
If Not FAcik Then
Begin
FBasePanel.Visible := True;
FAcik := True;
end
else
Begin
FBasePanel.Visible := False;
FAcik := False;
end;
FBasePanel.Width := Self.Width;
FBasePanel.Left := Self.Left;
FBasePanel.Top := Self.Top + Self.Height;
// Eklenen kısım burası
// --------------------------------------------------------------
if Self.Text <> '' then
try FTempDate := StrToDate( Self.Text )
except FTempDate := Now; end
else FTempDate := Now;
// --------------------------------------------------------------
FTarih.Caption := Ay(DateUtils.MonthOfTheYear(now));
TarihDoldur(FTempDate,FListBox);
end;
Re: DateTimePickere Combobox style gibi görsel verme
badkursat yazdı:Merhabalar.
MrMarman hocamızın kodlarını da kullanarak TEdit türevi bir class oluşturdum umarım işinize yarar. Isterseniz modifiye ederek bileşen haline de getirebilirsiniz.
Bütün Dökümanlar:
https://yadi.sk/d/3WAdKvcngkbbV

İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...