12. november 2003 - 19:45
Der er
8 kommentarer og
1 løsning
Gemme data i flere celler i en stringgrid
Hejsa
Jeg er ved at lave et billet system, hvor jeg så gemmer oplysninger fra en editbox, i stringgridden.. Jeg ved at det er muligt at markere flere celler på engang, men jeg kan kun gemme data i den første jeg klikkede på. Hvordan kan jeg gemme den samme data i alle celler?
13. november 2003 - 17:25
#8
Sådan så det ud før jeg indtastede ændringerne. Hvad skal ændres for at det komme til at fungerer? Der skal gemmes oplysninger i stringgriden, og der skal stå et 'S' i dem som der er gemt oplysninger i. 'S', skal først stå der når man trykker på en knap i en anden form. Jeg sender her koden for hele den første unit, og den form, hvor i man trykker til slut. Programmet er et billetbestillingsprogram vi skal lave i skolen:
Unit 1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, ComCtrls;
type
TBilletbestilling = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Navn: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button3: TButton;
Button4: TButton;
Label6: TLabel;
Edit1: TEdit;
Label7: TLabel;
Edit2: TEdit;
CheckBox1: TCheckBox;
Label9: TLabel;
Edit3: TEdit;
Label10: TLabel;
CheckBox2: TCheckBox;
Label8: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure StringGrid1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Billetbestilling: TBilletbestilling;
Nr, Raekke: Integer;
salgbillet: Integer;
salggebyr: Integer;
Reseveret: array[1..10, 1..20] of string;
flag1: boolean;
Implementation
uses Unit4, Unit2, Unit3, Unit5;
var
i: integer;
{$R *.DFM}
procedure TBilletbestilling.Timer1Timer(Sender: TObject);
begin
label2.caption:=DateTimeToStr(Now);
end;
procedure TBilletbestilling.FormCreate(Sender: TObject);
begin
flag1:=false;
label2.caption:=DateTimeToStr(Now);
for
Raekke:=1 to 10 do
stringgrid1.cells[0,Raekke]:=IntToStr(Raekke);
for
Nr:=1 to 20 do
Stringgrid1.cells[Nr,0]:=IntToStr(Nr);
end;
procedure TBilletbestilling.StringGrid1Click(Sender: TObject);
begin
if
edit3.text=''
then
Showmessage('Du skal indtaste et beløb')
else
begin
Nr:=billetbestilling.Stringgrid1.Col;
Raekke:=billetbestilling.Stringgrid1.Row;
if
checkbox2.checked=True
then
if
billetbestilling.stringgrid1.cells[Nr,Raekke]='S'
then
begin
salgbillet:= salgbillet - StrToInt(billetbestilling.edit1.text);
billetbestilling.stringgrid1.cells[Nr,Raekke]:='';
Reseveret[Nr,Raekke]:='';
end
else
begin
billetbestilling.stringgrid1.cells[Nr,Raekke]:='';
Reseveret[Nr,Raekke]:='';
end
else
if
(stringgrid1.cells[Nr,Raekke]='S') or (stringgrid1.cells[Nr,Raekke]='R')
then
Showmessage('Denne plads er allerede solgt eller reseveret. Hvis du ønsker at afhente den, indtast da telefon nummer, og tryk afhent. Ønskes den slettet, sæt da kryds i fluebenet i højre hjørne og klik på pladsen igen')
else
begin
form4.label4.Caption:='Række '+IntToStr(Raekke) + ', sæde ' +IntToStr(Nr);
form4.showmodal;
end
end
end;
procedure TBilletbestilling.Button3Click(Sender: TObject);
begin
if
navn.text=''
then
Showmessage('Du skal indtaste et telefon nummer først')
else
begin
i := 0;
repeat
inc(i);
nr := I mod 9;
raekke := I div 9;
if
nr=0
then
begin
Raekke:=Raekke-1;
Nr:= 9;
end
until
reseveret[nr,raekke]=navn.text;
if
reseveret[nr,raekke]=navn.text
then
begin
stringgrid1.Cells[nr,raekke]:='S';
form2.showmodal;
end;
Navn.text:='';
end
end;
procedure TBilletbestilling.Button4Click(Sender: TObject);
begin
billetbestilling.close;
end;
procedure TBilletbestilling.Button5Click(Sender: TObject);
begin
form3.showmodal;
end;
procedure TBilletbestilling.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Showmessage('Biografen har idag haft en samlet indtægt på '+ IntToStr((salgbillet + salggebyr))+ ',- Hvorfra salg af billeter udgjorde ' +IntToStr(salgbillet) + ',- og gebyrene udgjorde ' + IntToStr(salggebyr)+ ',-');
end;
procedure TBilletbestilling.CheckBox1Click(Sender: TObject);
begin
if
Checkbox1.checked=True
then
begin
label10.Visible:=True;
edit3.visible:=True;
end
else
begin
label10.Visible:=False;
edit3.visible:=False;
end
end;
procedure TBilletbestilling.CheckBox2Click(Sender: TObject);
begin
if
checkbox2.checked=True
then
label8.visible:=True
else
label8.visible:=False
end;
end.
Koden til den anden form:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
Label6: TLabel;
Label7: TLabel;
Button3: TButton;
Button2: TButton;
procedure PrintDialog1Close(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit4;
{$R *.DFM}
procedure TForm2.PrintDialog1Close(Sender: TObject);
begin
form2.print;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
button1.visible:= False;
button2.visible:=False;
form2.color:=clwhite;
form2.print;
button1.visible:=True;
button2.visible:=True;
form2.Color:=clBtnFace;
billetbestilling.stringgrid1.cells[Nr,Raekke]:='S';
if
(Billetbestilling.Edit1.text='') or (Billetbestilling.Edit2.text='')
then
begin
Showmessage('En af felterne Billetpris, eller Gebyr er tomme. Hvis du ønsker dette, indtast da et nul (0)');
Billetbestilling.Stringgrid1.Cells[Nr,Raekke]:='';
end
else
begin
salgbillet:= salgbillet + StrToInt(Billetbestilling.edit1.text);
salggebyr:= salggebyr + StrToInt(Billetbestilling.edit2.text);
if
flag1=True
then
salggebyr:= salggebyr + StrToInt(billetbestilling.edit3.text);
end;
form2.close;
form4.close;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
form2.Close;
form4.Close;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
billetbestilling.stringgrid1.cells[Nr,Raekke]:='';
form2.close;
form4.close;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
billetbestilling.stringgrid1.cells[Nr,Raekke]:='S';
if
(Billetbestilling.Edit1.text='') or (Billetbestilling.Edit2.text='')
then
begin
Showmessage('En af felterne Billetpris, eller Gebyr er tomme. Hvis du ønsker dette, indtast da et nul (0)');
Billetbestilling.Stringgrid1.Cells[Nr,Raekke]:='';
end
else
begin
salgbillet:= salgbillet + StrToInt(Billetbestilling.edit1.text);
salggebyr:= salggebyr + StrToInt(Billetbestilling.edit2.text);
if
flag1=True
then
salggebyr:= salggebyr + StrToInt(billetbestilling.edit3.text);
end;
form2.close;
form4.close;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
end;
end.