/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Procedure StandartTekst hvordan?
Fra : Monie Jacobsen


Dato : 16-08-02 06:49

Hej

I min TfrmProfil (Form4) er der som nedenfor en procedure til udskrivning.
Men ønsker, at lave en procedure med navn StandartTekst. Denne tekst ønsker
jeg anbragt i Form3, men skal kunne kaldes fra procedure
TfrmProfil.btnPrintClick(Sender: TObject)
Hvordan laves en sådan procedure StandartTekst ?
Og vis procedure ikke kan placeres, som jeg forslår, hvad vil du så foreslå?


procedure TfrmProfil.btnPrintClick(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
if PrinterSetupDialog1.Execute then
begin
Printer.BeginDoc; // **
with image1 do
begin
Procedure StandartTekst; Ønsker standartteksten kaldt her?

//Picture.Bitmap.Canvas.TextFlags := 0;
// Picture.Bitmap.Canvas.Font.Size := 12;
//Picture.Bitmap.Canvas.Font.Color := clBlue;
// Picture.Bitmap.Canvas.Font.Name := 'Comic Sans MS';
// Picture.Bitmap.Canvas.TextOut(20, 0, 'VingeProfil');
//Picture.Bitmap.Canvas.Font.Size := 10;
// Picture.Bitmap.Canvas.TextOut(500, 0,'' + FormatDateTime('dddd' +' "d."
d"." mmmm yyyy',now));
//Picture.Bitmap.Canvas.TextOut(500, 20, '
');
//Picture.Bitmap.Canvas.TextOut(500, 20, 'Klokken er ' + TimeToStr(Now) );
//Picture.Bitmap.Canvas.TextOut(20, 20, 'NASA 4415');
//Picture.Bitmap.Canvas.TextOut(20, 35, 'Sektion nr:'+' 6');
//Picture.Bitmap.Canvas.TextOut(20, 35, OpenDialog1.FileName );
end;

with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX,
Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic); // **
finally
EndDoc; // **
end;
end;
end;

************************************************

Procedure StandartTekst;
begin
Picture.Bitmap.Canvas.TextFlags := 0;
Picture.Bitmap.Canvas.Font.Size := 12;
Picture.Bitmap.Canvas.Font.Color := clBlue;
Picture.Bitmap.Canvas.Font.Name := 'Comic Sans MS';
Picture.Bitmap.Canvas.TextOut(20, 0, 'VingeProfil');
Picture.Bitmap.Canvas.Font.Size := 10;
Picture.Bitmap.Canvas.TextOut(500, 0,''
+ FormatDateTime('dddd' +' "d."d"." mmmm yyyy',now));
Picture.Bitmap.Canvas.TextOut(500, 20, '');
Picture.Bitmap.Canvas.TextOut(500, 20, 'Klokken er ' + TimeToStr(Now) );
Picture.Bitmap.Canvas.TextOut(20, 20, 'NASA 4415');
Picture.Bitmap.Canvas.TextOut(20, 35, 'Sektion nr:'+' 6');
Picture.Bitmap.Canvas.TextOut(20, 35, OpenDialog1.FileName );
end;

Med venlig hilsen
Monie




 
 
David A. D. Konrad (16-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 16-08-02 08:46

"Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
news:3d5c9256$0$88372

> I min TfrmProfil (Form4) er der som nedenfor en procedure til
udskrivning.
> Men ønsker, at lave en procedure med navn StandartTekst. Denne tekst
ønsker
> jeg anbragt i Form3, men skal kunne kaldes fra procedure
> TfrmProfil.btnPrintClick(Sender: TObject)
> Hvordan laves en sådan procedure StandartTekst ?

Det hedder "standarD"!!

> Og vis procedure ikke kan placeres, som jeg forslår, hvad vil du så
foreslå?

Hvis jeg har forstået dig ret : Det nemmeste er nok at skrive

procedure StandardsTekst;

i din TForm3-klasse. Dernæst højreklikker du, og klikker på "Complete Class
at curser". Dette bevirker at procedure-implementationen genereres i din
unit. Dernæst udfylder du StandardTekst med din kode, og kalder den inde fra
din btnPrintClick-handler akkurat som du kalder andre metoder - blev med den
forskel, at du angiver unittens navn inden procedure navnet, dvs

form.StandardTekst;




Monie Jacobsen (16-08-2002)
Kommentar
Fra : Monie Jacobsen


Dato : 16-08-02 09:55

Hej David A. D. Konrad
Tak for din ide.
Metoden til at procedure-implementationen genereres i unit. Den var fin.
Jeg er lidt ordblind, undskyld.

Men får Error meddelse når der compiles
[Error] Unit3.pas(275): Undeclared identifier: 'Picture'
Denne Picture.Bitmap.Canvas. er den tekst, der skal udskrives sammen med
Image1 billedet.
Hvad gøres der forkert her?

procedure TForm3.StandardsTekst;
begin
Picture.Bitmap.Canvas.TextFlags := 0;
Picture.Bitmap.Canvas.Font.Size := 12;
Picture.Bitmap.Canvas.Font.Color := clBlue;
Picture.Bitmap.Canvas.Font.Name := 'Comic Sans MS';
Picture.Bitmap.Canvas.TextOut(20, 0, 'VingeProfil');
Picture.Bitmap.Canvas.Font.Size := 10;
Picture.Bitmap.Canvas.TextOut(600, 0,'' + FormatDateTime('dddd' +' "d."
d"." mmmm yyyy',now));
Picture.Bitmap.Canvas.TextOut(600, 20, '
');
Picture.Bitmap.Canvas.TextOut(600, 20, 'Klokken er ' + TimeToStr(Now) );
Picture.Bitmap.Canvas.TextOut(20, 20, 'NASA 4415');
Picture.Bitmap.Canvas.TextOut(20, 35, 'Sektion nr:'+' 6');
Picture.Bitmap.Canvas.TextOut(20, 35, OpenDialog1.FileName );
end;

MVH
Monie


"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:ajiajt$4hj$1@sunsite.dk...
> "Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
> news:3d5c9256$0$88372
>
> > I min TfrmProfil (Form4) er der som nedenfor en procedure til
> udskrivning.
> > Men ønsker, at lave en procedure med navn StandartTekst. Denne tekst
> ønsker
> > jeg anbragt i Form3, men skal kunne kaldes fra procedure
> > TfrmProfil.btnPrintClick(Sender: TObject)
> > Hvordan laves en sådan procedure StandartTekst ?
>
> Det hedder "standarD"!!
>
> > Og vis procedure ikke kan placeres, som jeg forslår, hvad vil du så
> foreslå?
>
> Hvis jeg har forstået dig ret : Det nemmeste er nok at skrive
>
> procedure StandardsTekst;
>
> i din TForm3-klasse. Dernæst højreklikker du, og klikker på "Complete
Class
> at curser". Dette bevirker at procedure-implementationen genereres i din
> unit. Dernæst udfylder du StandardTekst med din kode, og kalder den inde
fra
> din btnPrintClick-handler akkurat som du kalder andre metoder - blev med
den
> forskel, at du angiver unittens navn inden procedure navnet, dvs
>
> form.StandardTekst;
>
>
>



David A. D. Konrad (16-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 16-08-02 11:04

"Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
news:3d5cbdfa$0$88384$edfadb0f@dspool01.news.tele.dk...
> Hej David A. D. Konrad
> Tak for din ide.
> Metoden til at procedure-implementationen genereres i unit. Den var fin.

Den er især god, hvis man f.eks skal lave properties, eller måske skriver
lidt langsomt.

> Jeg er lidt ordblind, undskyld.

Ja - hold straks op med det )

> Men får Error meddelse når der compiles
> [Error] Unit3.pas(275): Undeclared identifier: 'Picture'
> Denne Picture.Bitmap.Canvas. er den tekst, der skal udskrives sammen med
> Image1 billedet.
> Hvad gøres der forkert her?

Du mangler at have image1 foran, altså

image1.Picture.Bitmap.Canvas.TextFlags := 0;

etc

Alternativt kunne du kapsle koden ind i en with-sætning, altså

with image1 do
begin
//her copy paster du koden fra før, altså
Picture.Bitmap.Canvas.TextFlags := 0;
Picture.Bitmap.Canvas.Font.Size := 12;
etc
end;






Monie Jacobsen (16-08-2002)
Kommentar
Fra : Monie Jacobsen


Dato : 16-08-02 12:47

Hej David A. D. Konrad

Nu virker det fint. Mange tak for det!
Neden for er der 2 procedure som de ser ud nu.
Har du en komentar eller forbederet ændring vil det være fint.

procedure TForm3.StandardsTekst;
begin
with frmProfil.Image1 do
begin
Picture.Bitmap.Canvas.TextFlags := 0;
Picture.Bitmap.Canvas.Font.Size := 12;

*********************************************
procedure TfrmProfil.btnPrintClick(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
if PrinterSetupDialog1.Execute then
begin
Printer.BeginDoc; // **
Form3.StandardsTekst;
with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX,
Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic); // **
finally
EndDoc; // **
end;
end;
btntegn.Click;
end;

MVH
Monie


"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:ajiimo$476$1@sunsite.dk...
> "Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
> news:3d5cbdfa$0$88384$edfadb0f@dspool01.news.tele.dk...
> > Hej David A. D. Konrad
> > Tak for din ide.
> > Metoden til at procedure-implementationen genereres i unit. Den var
fin.
>
> Den er især god, hvis man f.eks skal lave properties, eller måske skriver
> lidt langsomt.
>
> > Jeg er lidt ordblind, undskyld.
>
> Ja - hold straks op med det )
>
> > Men får Error meddelse når der compiles
> > [Error] Unit3.pas(275): Undeclared identifier: 'Picture'
> > Denne Picture.Bitmap.Canvas. er den tekst, der skal udskrives sammen med
> > Image1 billedet.
> > Hvad gøres der forkert her?
>
> Du mangler at have image1 foran, altså
>
> image1.Picture.Bitmap.Canvas.TextFlags := 0;
>
> etc
>
> Alternativt kunne du kapsle koden ind i en with-sætning, altså
>
> with image1 do
> begin
> //her copy paster du koden fra før, altså
> Picture.Bitmap.Canvas.TextFlags := 0;
> Picture.Bitmap.Canvas.Font.Size := 12;
> etc
> end;
>
>
>
>
>



David A. D. Konrad (16-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 16-08-02 13:26

"Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
news:3d5ce634$0$33522$edfadb0f@dspool01.news.tele.dk...
> Hej David A. D. Konrad
>
> Nu virker det fint. Mange tak for det!
> Neden for er der 2 procedure som de ser ud nu.
> Har du en komentar eller forbederet ændring vil det være fint.

Jeg synes det ser fint ud. Man kan altid forbedre kode i ét væk - men virker
det tilfredsstillende, er tiden nok bedre brugt på at komme videre med sit
projekt!



Monie Jacobsen (16-08-2002)
Kommentar
Fra : Monie Jacobsen


Dato : 16-08-02 13:46

Hej David A. D. Konrad

Ok. Men mange tak for din hjælpen.

MVH
Monie

"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:ajir1a$64b$1@sunsite.dk...
> "Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
> news:3d5ce634$0$33522$edfadb0f@dspool01.news.tele.dk...
> > Hej David A. D. Konrad
> >
> > Nu virker det fint. Mange tak for det!
> > Neden for er der 2 procedure som de ser ud nu.
> > Har du en komentar eller forbederet ændring vil det være fint.
>
> Jeg synes det ser fint ud. Man kan altid forbedre kode i ét væk - men
virker
> det tilfredsstillende, er tiden nok bedre brugt på at komme videre med sit
> projekt!
>
>



Monie Jacobsen (16-08-2002)
Kommentar
Fra : Monie Jacobsen


Dato : 16-08-02 10:47

Hej

Har et problem efter der er blevet indsat Form3.StandardsTekst; //Kald af
tekst til Image billedet i udskrivning delen.
Problemet er når når print knappen aktivere, skrives billedet + tekst fint
ud, men så forsvinder billedet.
Hvad kan der gøres for at få billedet tilbage igen på Image1? Se
Udskrivnings proceduren herunder.

procedure TfrmProfil.btnPrintClick(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
if PrinterSetupDialog1.Execute then
begin
Printer.BeginDoc; // **

Form3.StandardsTekst; //Kald af tekst til Image billedet.

with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX,
Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic); // **
finally
EndDoc; // **
end;

end;
end;

MVH
Mnie

"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:ajiajt$4hj$1@sunsite.dk...
> "Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
> news:3d5c9256$0$88372
>
> > I min TfrmProfil (Form4) er der som nedenfor en procedure til
> udskrivning.
> > Men ønsker, at lave en procedure med navn StandartTekst. Denne tekst
> ønsker
> > jeg anbragt i Form3, men skal kunne kaldes fra procedure
> > TfrmProfil.btnPrintClick(Sender: TObject)
> > Hvordan laves en sådan procedure StandartTekst ?
>
> Det hedder "standarD"!!
>
> > Og vis procedure ikke kan placeres, som jeg forslår, hvad vil du så
> foreslå?
>
> Hvis jeg har forstået dig ret : Det nemmeste er nok at skrive
>
> procedure StandardsTekst;
>
> i din TForm3-klasse. Dernæst højreklikker du, og klikker på "Complete
Class
> at curser". Dette bevirker at procedure-implementationen genereres i din
> unit. Dernæst udfylder du StandardTekst med din kode, og kalder den inde
fra
> din btnPrintClick-handler akkurat som du kalder andre metoder - blev med
den
> forskel, at du angiver unittens navn inden procedure navnet, dvs
>
> form.StandardTekst;
>
>
>



David A. D. Konrad (16-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 16-08-02 13:23

"Monie Jacobsen" <monie@tdcadsl.dk> skrev i en meddelelse
news:3d5cca25$0$43960$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Har et problem efter der er blevet indsat Form3.StandardsTekst; //Kald af
> tekst til Image billedet i udskrivning delen.
> Problemet er når når print knappen aktivere, skrives billedet + tekst fint
> ud, men så forsvinder billedet.
> Hvad kan der gøres for at få billedet tilbage igen på Image1? Se
> Udskrivnings proceduren herunder.

Problemet er, at du kun har "tegnet" billedet "manuelt" på din form. Formen
ved ikke, at den skal tegne billedet, når den f.eks har været "gemt væk"
under et andet vindue - da vil der kun blive gentegnet det, som den kender
til, dvs sende beskeder til f.eks de komponenter der er på formen om at de
skal gentegne sig selv. Løsningen i dit tilfælde er at tegne på billedet i
den event på formen der hedder OnPaint - den vil blive kaldt hver gang
windows mener formen har brug for at blive refreshet.



Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408490
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste