Autor Beitrag
Adrasteia
Hält's aus hier
Beiträge: 10


Delphi 2007
BeitragVerfasst: Do 23.10.08 14:38 
Hi Leute,
ich nutze Delphi 2007 und auch auf die Gefahr hin, einer erneuten Frage in der Richtung,
ich habe zwei Daten zb. 01.10.2008 und den 13.10.2008 beide stehen in einer dbmemo (das erkennt delphi auch)
ich möchte nun, dass in einer schleife vom 1. bis zum einschließlich 13. hochgezählt wird und mir diese ergebnisse in combobox1
zb.
--01.10.2008
--02.10.2008
--03.10.2008 etc. ausgewiesen werden ich hatte mir das bis jetzt so gedacht?!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm6.DBComboBox2Change(Sender: TObject);
var i:double;
var Datum1:TDateTime;
var Datum2: TDateTime;
begin
Datum1 := StrToDate (DBMemo2.Text);
Datum2 := StrToDate (DBMemo3.Text);
i :=  1;
repeat canvas.TextOut(i);
i := datum1 + i until i = Datum2;
end;

aber noch funktioniert es nicht und ich verzweifel langsam, bin doch echt am suchen wie ne große und habe in der richtung auch viele ansätze gefunden, aber es funtz nicht, wie ich das möchte
wäre nett, wenn ihr mir da helfen könntet, :D

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.10.08 14:40 
Gehst Du mit einem gewissen phoenix_ft in dieselbe Klasse? In der DP kam die Frage heute morgen schon einmal: http://www.delphipraxis.net/post955892.html#955892
Adrasteia Threadstarter
Hält's aus hier
Beiträge: 10


Delphi 2007
BeitragVerfasst: Do 23.10.08 16:04 
nein nicht dieselbe klasse ;)
aber so ähnlich
ok, hab ich mir angesehen, aber dann noch von mir ne frage dazu
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure ListDaysBetween(FirstDate, SecondDate: TDate; const sList: TStrings); 
var CurrDate: TDate; 
begin 
  sList.BeginUpdate; 
  try 
    sList.Clear; //kann auch weggelassen werden, dann bleiben alte Einträge erhalten => ist klar!
    CurrDate := trunc(FirstDate); 
    while CurrDate <= trunc(SecondDate) do 
      begin 
        sList.Add(DateToStr(CurrDate));  //\\ist das hier der punkt?! und wenn es eine listbox oder combolistbox ist?
        CurrDate := CurrDate + 1; //unter Delphi 5 gibt es DateUtils noch nicht 
      end; 
  finally 
    sList.EndUpdate; 
  end; 
end;

welcher teil davon wirft mir meine informationen zu? sprich: siehe fragen im quelltext
danke für den hinweis

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.10.08 16:50 
Genau an der Stelle wird das Datum eingetragen. Der Parameter sList ist vom Typ TStrings, Du kannst also z.B. ComboBox.Items oder ListBox.Items oder Memo.Lines oder jeden anderen Nachfolger von TStrings übergeben.
Adrasteia Threadstarter
Hält's aus hier
Beiträge: 10


Delphi 2007
BeitragVerfasst: Do 23.10.08 16:57 
Hi DeddyH
in meinem programm habe ich auf dem anderen formular mit einer dblookupcombobox gearbeitet und mir werden alle namen angezeigt (ohne quellcode, nur durch einstellungen im objectinspector) *freu*
nun meine frage, wo liegt denn da der unterschied?
warum ging das mit der combobox nicht auch so? :( aber ok wenigstens die eine hälfte geht wie es soll
mit dem datum von dir, ich weiß nicht noch habe ich nicht rausgefunden, wie genau es funtz, keine fehlermeldung und nicht, aber es passiert nichts offensichtliches
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.10.08 17:05 
Die datensensitiven Komponenten (also die, die mit "DB" beginnen) erwachen zum Leben, sobald alle Einstellungen korrekt und sie mit der Datenbank verbunden sind, und das auch in der IDE. Wenn Du solch ein Verhalten auch mit einer normalen ComboBox realisieren möchtest, müsstest Du eine eigene Ableitung davon schreiben.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.10.08 17:56 
Ich habe mal aus Lust und Laune in meine Trickkiste gegriffen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
//dieser Teil muss in den interface-Teil noch vor der Deklaration des Formulars
type
  TComboBox = class(StdCtrls.TComboBox)
  private
    FStartDate,
    FEndDate: TDate;
    procedure ListDaysBetween(FirstDate, SecondDate: TDate);
    procedure SetStartdate(const Value: TDate);
    procedure SetEndDate(const Value: TDate);
  public
    constructor Create(AOwner: TComponent);override;
    property StartDate: TDate read FStartDate write SetStartdate;
    property EndDate: TDate read FEndDate write SetEndDate;
  end;

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
//dieser Teil gehört nach implementation
constructor TComboBox.Create(AOwner: TComponent);
begin
  inherited;
  FStartDate := Date;
  FEndDate := Date + 7;
  ListDaysBetween(FStartDate,FEndDate);
end;

procedure TComboBox.ListDaysBetween(FirstDate, SecondDate: TDate);
var CurrDate: TDate;
begin 
  Items.BeginUpdate;
  try 
    Items.Clear;
    CurrDate := trunc(FirstDate); 
    while CurrDate <= trunc(SecondDate) do 
      begin 
        Items.Add(DateToStr(CurrDate));
        CurrDate := CurrDate + 1;
      end;
  finally
    Items.EndUpdate;
  end;
end;

procedure TComboBox.SetEndDate(const Value: TDate);
begin
  FEndDate := Value;
  ListDaysBetween(FStartDate,FEndDate);
  if Items.Count > 0 then
    ItemIndex := 0;
end;

procedure TComboBox.SetStartdate(const Value: TDate);
begin
  FStartDate := Value;
  ListDaysBetween(FStartDate,FEndDate);
  if Items.Count > 0 then
    ItemIndex := 0;
end;


Nun kannst Du im Programm mal ComboBox.StartDate oder ComboBox.EndDate neu setzen und sehen, was passiert ;)
Adrasteia Threadstarter
Hält's aus hier
Beiträge: 10


Delphi 2007
BeitragVerfasst: Fr 24.10.08 08:36 
cool ;)
danke
auch für die erkärungen *freu*