Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Grid mit unterschiedlicher Zeilenanzahl (https://www.delphipraxis.net/101516-grid-mit-unterschiedlicher-zeilenanzahl.html)

Banetel.eu 14. Okt 2007 20:52


Grid mit unterschiedlicher Zeilenanzahl
 
http://img132.imageshack.us/img132/5137/gridqn6.th.jpg

Wie oder ob ist es möglich ein Grid wie auf den Bild oben zu erzeugen?

Es sollte ca. so sein 1.Zeile 2 Zellen
2.Zeile 24 Zeilen (1.Zeile *12)
3.Zeile 744 Zeilen (2.Zeile * 31)

Zum Testen geht natürlich auch
1.Zeile 2 Zeilen
2.Zeile 4 Zeilen
3.Zeile 8 Zeilen

Alle Zeilen unter 3 sollen die gleichen Anzahl wie Zeile 3 haben. Ich habe ein DrawGrid genommen aber StringGrid geht auch.

Banetel.eu 15. Okt 2007 20:13

Re: Grid mit unterschiedlicher Zeilenanzahl
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe es jetzt selber geschafft - zwar über ein Umweg aber es geht :P

Undzwar so
Delphi-Quellcode:
if StringGrid1.LeftCol = 0 then Monat_minus;
if StringGrid1.LeftCol = 25 then Monat_plus;
Und halt die Anzeigen oben selber gemacht.

Hansa 16. Okt 2007 00:29

Re: Grid mit unterschiedlicher Zeilenanzahl
 
Wer andauernd Zeilen mit Zellen oder gar Spalten verwechselt, der braucht sich nicht zu wundern. :mrgreen:

quendolineDD 16. Okt 2007 14:17

Re: Grid mit unterschiedlicher Zeilenanzahl
 
Zeig bitte mal deinen Quelltext, wie du die Formatierung vorgenommen hast ;)

Danke im Vorraus

Banetel.eu 16. Okt 2007 21:40

Re: Grid mit unterschiedlicher Zeilenanzahl
 
:???:
Zitat:

Zitat von Hansa
Wer andauernd Zeilen mit Zellen oder gar Spalten verwechselt, der braucht sich nicht zu wundern. :mrgreen:

LOL naja ich habe es ja geschaft :???:


Den Code bekommst du natürlich:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ExtCtrls, Calendar, ColorGrd;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Panel3Click(Sender: TObject);
    procedure Panel4Click(Sender: TObject);
    procedure Monat_plus;
    procedure Monat_minus;
    procedure StringGrid1DblClick(Sender: TObject);
  private
        { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Monat : array[1..12] of String;
  Monata: integer;
  Jahr:  integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
  Vorm: Integer;
  Norm: Integer;
begin


StringGrid1.Cells[0,0] :='...';
StringGrid1.ColWidths[0] := 70;
for I := 1 to 31 do begin
StringGrid1.Cells[I,0] :='             '+ inttostr(I);
end;
StringGrid1.Cells[32,0] :='                 ...';
StringGrid1.ColWidths[32] := 70;

for I := 1 to 5 do begin
StringGrid1.RowHeights[I] := 100;
end;
StringGrid1.LeftCol:=1;

Monat[1]:='Januar';
Monat[2]:='Februar';
Monat[3]:='März';
Monat[4]:='April';
Monat[5]:='Mai';
Monat[6]:='Juni';
Monat[7]:='Juli';
Monat[8]:='August';
Monat[9]:='September';
Monat[10]:='Oktober';
Monat[11]:='November';
Monat[12]:='Dezember';


Jahr:=strtoint(FormatDateTime('yyyy', Now));
Panel2.Caption:=FormatDateTime('yyyy', Now);

Vorm:=strtoint(FormatDateTime('m', Now));
if Vorm = 1 then begin Vorm:=12; end else Vorm:=Vorm-1;
Panel3.Caption:=Monat[Vorm];

Monata:=strtoint(FormatDateTime('m', Now));
Panel1.Caption:=Monat[strtoint(FormatDateTime('m', Now))];

Norm:=strtoint(FormatDateTime('m', Now));
if Norm = 12 then begin Norm:=1; end else Norm:=Norm+1;
Panel4.Caption:=Monat[Norm];

end;


procedure TForm1.Panel3Click(Sender: TObject);
begin
 Monat_minus;
 StringGrid1.LeftCol := 1;
end;

procedure TForm1.Panel4Click(Sender: TObject);
begin
Monat_plus;
end;

procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
showmessage(inttostr(StringGrid1.Row)+' '+inttostr(StringGrid1.Col));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if StringGrid1.LeftCol = 0 then Monat_minus;
if StringGrid1.LeftCol = 25 then Monat_plus;
end;





procedure TForm1.Monat_plus;
var
  Vorm: Integer;
  Norm: Integer;
begin
StringGrid1.Enabled:=false;
  Panel3.Caption := Monat[Monata];
  Norm := Monata;
  if Norm = 12 then
  begin
    Norm := 1;
    Jahr := Jahr + 1;
    Panel2.Caption := inttostr(Jahr);
  end
  else
    Norm := Norm + 1;
  Monata := Norm;
  Panel1.Caption := Monat[Norm];
  Vorm := Norm;
  if Vorm = 12 then
  begin
    Vorm := 1;
  end
  else
    Vorm := Vorm + 1;
  Panel4.Caption := Monat[Vorm];
  StringGrid1.LeftCol := 1;
StringGrid1.Enabled:=true;
end;

procedure TForm1.Monat_minus;
var
  Norm: Integer;
  Vorm: Integer;
begin
StringGrid1.Enabled:=false;
  Panel4.Caption := Monat[Monata];
  Norm := Monata;
  if Norm = 1 then
  begin
    Norm := 12;
    Jahr := Jahr - 1;
    Panel2.Caption := inttostr(Jahr);
  end
  else
    Norm := Norm - 1;
  Monata := Norm;
  Panel1.Caption := Monat[Norm];
  Vorm := Norm;
  if Vorm = 1 then
  begin
    Vorm := 12;
  end
  else
    Vorm := Vorm - 1;
  Panel3.Caption := Monat[Vorm];
  StringGrid1.LeftCol := 24;
StringGrid1.Enabled:=true;
end;


end.

Mit
Delphi-Quellcode:
FormatDateTime('dddd', StrToDate(inttostr(I)+'.'+inttostr(Monata)+'.'+inttostr(Jahr));
kannst du auch noch den aktuellen Wochentag anzeigen lassen.


Mit Verbesserung immer her mit :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz