Avatar billede delphiuser Mester
02. september 2006 - 08:44 Der er 6 kommentarer og
1 løsning

system for vagtplan

Hej alle eksperter....

Jeg er i gang med et system hvor der skal være muligt at oprette en vagtplan. Men den skal jo bygges op på en special måde...

beskrivelse af opbygningen....

lodret der skal alle vagternes navne stå. og vandret skal ugedagene stå. Så skal jeg ud for hver vagt's navn have en select box som skal indeholde en bestemt data med deres mødetider eller om de har fri den pågældende dag... Men det skal være sådan at den automatisk skal oprette det antal selct bokse derskal være ud fra hvor mange vagter der findes i systemet.

til sidst skal vagtplanen kunne gemmes i en fil som er udprint's venlig hvor det er sat op som en vagtplan. ved godt det er noget man kan lave i exel. Men mon ikke det kan lade sig gøre her i delphi også?

håber nogen kan hjælpe mig med denne lille opgave. For det er kun dette med vagtplanen jeg mangler...

den som kommer med det hjælp som gør at det virker 100% for de 100 point som jeg har sat til rådighed....
Avatar billede delphiuser Mester
02. september 2006 - 09:44 #1
Jeg fandt et eksempel på noget af det jeg gerne vil have men kan ikke lige få det til at virke...

her er mine fejl meddelser.....

[Pascal Error] Unit14.pas(79): E2029 Statement expected but 'PROCEDURE' found
[Pascal Error] Unit14.pas(87): E2003 Undeclared identifier: 'ListFields'
[Pascal Fatal Error] Project2.dpr(17): F2063 Could not compile used unit 'Unit14.pas'

her er hele min unit14 kode

unit Unit14;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADODB, DBCtrls, DB, Grids, DBGrids, StdCtrls, ExtCtrls;

type
  TForm14 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    GroupBox1: TGroupBox;
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBLookupComboBox1: TDBLookupComboBox;
    ADOQuery1: TADOQuery;
    DataSource2: TDataSource;
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form14: TForm14;

implementation

{$R *.dfm}

procedure TForm14.DBGrid1ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.FieldName = DBLookupComboBox1.DataField then
    DBLookupComboBox1.Visible := False

end;

procedure TForm14.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = DBLookupComboBox1.DataField) then
    with DBLookupComboBox1 do
    begin
      Left := Rect.Left + DBGrid1.Left + 2;
      Top := Rect.Top + DBGrid1.Top + 2;
      Width := Rect.Right - Rect.Left;
      Width := Rect.Right - Rect.Left;
      Height := Rect.Bottom - Rect.Top;

      Visible := True;
    end;
  end

end;

procedure TForm14.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = Chr(9)) then Exit;

  if (DBGrid1.SelectedField.FieldName = DBLookupComboBox1.DataField) then
  begin
    DBLookupComboBox1.SetFocus;
    SendMessage(DBLookupComboBox1.Handle, WM_Char, word(Key), 0);

end;

procedure TForm14.FormCreate(Sender: TObject);
begin
with DBLookupComboBox1 do
begin
  DataSource := DataSource1; // -> AdoTable1 -> DBGrid1
  ListSource := DataSource2;
  DataField  := 'mødetid'; // from AdoTable1 - displayed in the DBGrid
  KeyField  := 'mødetid';
  ListFields := 'mødetid';

 
  Visible    := False;
end;

DataSource2.DataSet := AdoQuery1;

AdoQuery1.Connection := AdoConnection1;
AdoQuery1.SQL.Text := 'SELECT mødetid FROM vagtplan';
AdoQuery1.Open;

end;

end.
Avatar billede nielle Nybegynder
02. september 2006 - 09:59 #2
Er du helt sikker på at den kode overhovedet virker. Det er i hvert fald nogle temmelige fundamentale fejl, så den kan aldrig have kompileret:


1)

Ret:

procedure TForm14.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = Chr(9)) then Exit;

  if (DBGrid1.SelectedField.FieldName = DBLookupComboBox1.DataField) then
  begin
    DBLookupComboBox1.SetFocus;
    SendMessage(DBLookupComboBox1.Handle, WM_Char, word(Key), 0);

end;

- til:

procedure TForm14.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = Chr(9)) then Exit;

  if (DBGrid1.SelectedField.FieldName = DBLookupComboBox1.DataField) then
  begin
    DBLookupComboBox1.SetFocus;
    SendMessage(DBLookupComboBox1.Handle, WM_Char, word(Key), 0);
  end;
end;

2)

Ret:

procedure TForm14.FormCreate(Sender: TObject);
begin
with DBLookupComboBox1 do
begin
  DataSource := DataSource1; // -> AdoTable1 -> DBGrid1
  ListSource := DataSource2;
  DataField  := 'mødetid'; // from AdoTable1 - displayed in the DBGrid
  KeyField  := 'mødetid';
  ListFields := 'mødetid';

 
  Visible    := False;
end;

- til

procedure TForm14.FormCreate(Sender: TObject);
begin
with DBLookupComboBox1 do
begin
  DataSource := DataSource1; // -> AdoTable1 -> DBGrid1
  ListSource := DataSource2;
  DataField  := 'mødetid'; // from AdoTable1 - displayed in the DBGrid
  KeyField  := 'mødetid';
  // ListFields := 'mødetid';

 
  Visible    := False;
end;


Feltet "ListFields" skulle øjensynligt være et felt i DBLookupComboBox1, men det er Delphi øjensynligt ikke enig i. Der burde dog ikke ske noget ved at udkommentere den.
Avatar billede capn Nybegynder
02. september 2006 - 12:57 #3
Har du overvejet at bygge det uden på MS Outlook? Det kan tilpasses ret godt med VBA script.
Avatar billede janbb Juniormester
03. september 2006 - 10:02 #4
Hvis du anbringer dine data i en alm. database - så mener jeg bestemt, der er noget tillægsprogram: Quikreport, man kan bruge til at udskrive sine data med.
Har brugt det et par gange og det er ikke helt logisk at arbejde med når man ikke er vant til det.Minder om en slags 'outlook' eller hvad det er de hedder - den slags programmer man sætter avisartikler og den slags op i.Meget besværlig, men det er jo så kun en enkelt gang det skal sættes op.
Avatar billede janbb Juniormester
03. september 2006 - 10:22 #5
De programmer (a la avisopsætning) hedder self. DTP (desktoppublisching).
Quikreportkomponenterne findes kun i proffesionel udgaverne af delphi i øvrigt,
men findes vistnok osse som 3dje parts komponenter.
Borland har vistnok købt licens til QR af QSD AS i Norge (iflg en bog jeg lige kiggede i).
Avatar billede delphiuser Mester
09. september 2006 - 12:16 #6
har fundet ud af det selv. men ellers tak for jere gode forslag
Avatar billede nielle Nybegynder
09. september 2006 - 18:18 #7
Kunne det ikke kompile med de rettelser jeg angav?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester