Avatar billede 01-gjk Nybegynder
20. april 2003 - 00:11 Der er 13 kommentarer og
1 løsning

Database til font dialog

Jeg er igang med at lave et tekstbehandlingsprogram og jeg vil gerne vide hvordan man gemmer font dialog når man går ud af programmet?? Skal det gemmes i en database og et eksempel tak, hvis det ikke er det store problem...
Takker på forhånd
Avatar billede stone Forsker
20. april 2003 - 07:53 #1
er det den sidst benyttede font i fontdialog du gerne vil have gemt.
Avatar billede steinmann Nybegynder
20. april 2003 - 11:26 #2
Her er et lille eksempel:

uses
  Registry

var
  StdFont: TFont;
  TmpFont: TFont;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  if FontDialog1.Execute then
  begin
  TmpFont := FontDialog1.Font;
  Memo1.Font := TmpFont;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
  OpenKey('software\mitfirma\mitprogram', True);
  WriteString('navn', TmpFont.Name);
  WriteInteger('farve', TmpFont.Color);
  WriteInteger('stoerrelse', TmpFont.Size);
  finally
  Reg.Free
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
  OpenKey('software\mitfirma\mitprogram', True);
  TmpFont.Name := ReadString('navn');
  TmpFont.Color := ReadInteger('farve');
  TmpFont.Size := ReadInteger('stoerrelse');
  finally
  Reg.Free
  end;
  FontDialog1.Font := TmpFont;
  Memo1.Font := TmpFont;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Memo1.Font := StdFont;
  FontDialog1.Font := StdFont;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StdFont := TFont.Create;
  with StdFont do
  begin
  Name := 'MS Sans Serif';
  Size := 8;
  Color := clBlack;
  end;
end;

Du kan downloade sourcen her:
www.mobhit.dk/eksp342373.zip

MVH
  Casper Steinmann
Avatar billede 01-gjk Nybegynder
20. april 2003 - 19:47 #3
dit link virker ikke
Avatar billede 01-gjk Nybegynder
20. april 2003 - 20:31 #4
hvor skal de forskellige funktioner indsættes, jeg har ikke helt forstået det... jeg har selvfølgelig gjort StdFont og TmpFont globale variabler. Button1.click har jeg sat ind ved min font knap. Form1.FormCreate har jeg også sat ind det rigtige sted, men hvad med resten????
Avatar billede steinmann Nybegynder
21. april 2003 - 12:36 #5
hmm, havde lagt den lokalt på egen pc og den var slukket... sorry, her er et link der virker hele tiden:
  www.eurowave.dk/eksp342373.zip

Du skal have 4 knapper, en memocontrol og en Fontdialogboks, ellers virker det ikke... men download sourcen og kig, det er lidt nemmere ;)

Casper :)
Avatar billede 01-gjk Nybegynder
21. april 2003 - 14:14 #6
takker, men hvordan kan man gøre så den automatisk henter den font som man senest har brugt????
Avatar billede 01-gjk Nybegynder
21. april 2003 - 14:15 #7
altså når man åbner programmet :)
Avatar billede steinmann Nybegynder
21. april 2003 - 14:23 #8
Indsætter dette(som også er i Button3Click) i OnShow, altså:

procedure TForm1.FormShow(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
  OpenKey('software\mitfirma\mitprogram', True);
  TmpFont.Name := ReadString('navn');
  TmpFont.Color := ReadInteger('farve');
  TmpFont.Size := ReadInteger('stoerrelse');
  finally
  Reg.Free
  end;
  FontDialog1.Font := TmpFont;
  Memo1.Font := TmpFont;
end;
Avatar billede 01-gjk Nybegynder
21. april 2003 - 15:27 #9
når programmet starter så siger den at den ikke kan finde data til 'farve'. Er det ikke muligt at anguve hvad farve er inden programmet starter?
Avatar billede steinmann Nybegynder
21. april 2003 - 15:52 #10
Ahh... i formcreate skal du indsætte denne linie: TmpFont := TFont.Create;
Avatar billede 01-gjk Nybegynder
21. april 2003 - 16:09 #11
ok takker indtil videre.... :)
MEN man skal have været inde i programmet en gang og så virker det. Er det ikke muligt at gøre det uden at have prøvet programmet før??? takker endnu engang
Avatar billede steinmann Nybegynder
21. april 2003 - 16:17 #12
np da ;)

men hvis du skal checke det, så kan/skal du bruge den her(det er Formshow)

procedure TForm1.FormShow(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
  //Hvis ikke programmet er startet før,
  //så eksisterer der ikke en nøgle i
  //registreringsdatabasen, derfor skal
  //der oprettes en ny og vi putter samtidig
  //nogle standard værdier i.
  if not KeyExists('software\mitfirma\mitprogram') then
  begin
    OpenKey('software\mitfirma\mitprogram', True);
    WriteString('navn', 'MS Sans Serif');
    WriteInteger('farve', clBlack);
    WriteInteger('stoerrelse', 8);
  end;
  OpenKey('software\mitfirma\mitprogram', True);
  TmpFont.Name := ReadString('navn');
  TmpFont.Color := ReadInteger('farve');
  TmpFont.Size := ReadInteger('stoerrelse');
  finally
  Reg.Free
  end;
  FontDialog1.Font := TmpFont;
  Memo1.Font := TmpFont;
end;

MVH
  Casper Steinmann
Avatar billede 01-gjk Nybegynder
21. april 2003 - 16:41 #13
mærkeligt at det stadigvæk sker.... men tak for hjælpen
Avatar billede steinmann Nybegynder
21. april 2003 - 17:17 #14
hmm ja, det er mærkeligt... men np ;)
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