Avatar billede uthsen Nybegynder
04. september 2003 - 01:29 Der er 44 kommentarer og
1 løsning

quickrep vælger ikke den rigtige record til print

Når jeg har valgt en record på min hovedform og vil printe den, kalder jeg min quickrep. med koden:

procedure TNoteForm.UdskrivMenuClick(Sender: TObject);
begin
  if PrintDialog.Execute then
    PrintHelles.HP.Preview;
end;

Siden hentes....men desværre vil quickrep. Nu gerne printe hele 10 vilkårlige sider fra min tabel.... og teksten på selve printet går ud over A4 siden.
Hvordan løser jeg det problem?
Avatar billede uthsen Nybegynder
04. september 2003 - 22:41 #1
Jeg er ved at lave en opslagsbog "kogebog". Det jeg vil er,når jeg står på en bestemt madopskrift, skal jeg kunne, hurtigt og let,printe præcis denne opskrift med billede og tekst. Nu henter den min quicrep, som vil printe flere og helt vilkårlige sider fra min kogebog!!
Måske kan det lade sig gøre direkte fra min hovedform, hvor mit "DBRichEdit-felt"  og "DBImage-felt", bliver printet ud samtidig. måske bare ved at tilføje lidt kode til:
procedure TNoteForm.UdskrivMenuClick(Sender: TObject);
begin
  if PrintDialog.Execute then
    ???????
end;
Kan det overhovedet ladesig gøre?
Hvis ikke - hvordan får jeg så quickrep. til at opføre sig ordentlig?
Avatar billede stone Forsker
05. september 2003 - 00:38 #2
du kan lave en filterfunktion, så vil quickrep kun vise den aktuelle post.

så længe filterfunktionen er aktiv.

Filterfunktionen kunne virke ved at du har en knap (print) hvor event filter

alle andre end den aktuelle post fra - før visning i quickrep.
Avatar billede stone Forsker
05. september 2003 - 00:54 #3
eller du kan overfører aktuelle data til Memo - og så printe ud. F.eks

Memo1.lines.add(dbedit1.text); //kopiere data fra dbedit1 til memo
Memo1.lines.add(dbedit2.text);
osv...
Avatar billede uthsen Nybegynder
05. september 2003 - 18:35 #4
Kære Stone
Du er så dygtig og jeg er kun en nybegynder, der ikke har programmeret det sidste år...så vil du ikke nok være sød og forklare lidt nærmere, hvadjeg præcis skal gøre?
Jeg har fundet Memo og placeret den på hovedformen. Nu kan jeg ikke komme videre, fordi jeg ikke er klog nok!
Vil det være bedst at anvende Memo?
Jeg vil meget gerne have løst problemet, da programmet snart er færdigt og vigtig for mig.
Avatar billede stone Forsker
05. september 2003 - 19:14 #5
OK....om du skal bruge memo eller richedit, kommer an på om det er ren tekst eller
formateret tekst, når du bruger richedit kan du gemme din tekst i forskellige formater f.eks hvis du har skrevet din tekst i verdana bliver den gemt med formateringen verdana, memo kan kun gemme simpel tekst.
Først skal jeg vide om dit program indeholder en database?

Hvis den gør det kan du bruge ovenstående kode, som du bruger i din event for en f.eks Tbutton - når du trykker på en Tbutton1 bliver indhold af dbedit1 overført til din memo/richedit,

herefter putter du en Tbutton2 på din form og skriver://eller kopiere indhold her fra

var
Line:Integer;
PrintText:System.Text;// udskriver indhold i memo/richedit
begin
if PrintDialog1.Execute then
begin
AssignPrn(PrintText);
ReWrite(PrintText);
Printer.Canvas.Font := History.Font;
for Line :=0 to History.Lines.Count - 1 do
Writeln(PrintText, History.Lines[Line]);
System.Close(PrintText);
end;
end;

Læg mærke til at jeg har kaldt min memo/richedit history det kan du ændre til et andet passende navn.

Husk under uses at skrive printers
Husk at smide en printdialog på din form (den finder du på fanebladet dialogs)

skulle der stadig være problemer med koden siger du bare til :)

stone
Avatar billede uthsen Nybegynder
05. september 2003 - 19:53 #6
Mit program indeholder en Paradoxtabel kaldet M.DB, som vel er en database.Tabellen hedder Table1.
Har et felt "DBrichedit1" på min hovedform "Start", hvor jeg kan ændre og gemme tekst i forskellige formater.
Har lige smidt en printdialog på "Start" og tænker lidt over, hvad du ellers har skrevet.
Det er jo svært !
Avatar billede uthsen Nybegynder
05. september 2003 - 20:28 #7
Får nu noget ud på printeren, skal lige undersøge om det er ok!
Min Quickrep. skal jeg så ikke bruge- vel?
Avatar billede uthsen Nybegynder
05. september 2003 - 20:49 #8
Du er dygtig!! men:
NU bliver mit DBImage jo ikke printet med (som det skal) og formateringen er væk.
Koden virker fint og teksten fra en valgt side bliver printet.
Kan du ikke ændre lidt i din(nedenstående kode), således DBImage + tekstformatering printes med.
Eller helst, sådan den valgte side i min, ellers så "fine", Quickrep. ved navn: "HP:TQuickRep", printes ud?

Du må altså ikke forlade mig Stone :)

AssignPrn(PrintText);
ReWrite(PrintText);
Printer.Canvas.Font := History.Font;
for Line :=0 to History.Lines.Count - 1 do
Writeln(PrintText, History.Lines[Line]);
System.Close(PrintText);
Avatar billede stone Forsker
05. september 2003 - 21:08 #9
bare rolig... skal lige ha lidt kaffe og se lidt fjerner
Avatar billede stone Forsker
05. september 2003 - 21:16 #10
lige for øjeblikket har du ikke brug for quickrep... bruger selv dbpro til mine filter opgaver
når jeg benytter min egen ændrede quickrep. (dvs andre ikoner dansk hint popup)
Jeg er ikke så stiv i filtrering i databaser, derfor bruger jeg dbpro som er et component med med søgemuligheder/filtrerings muligheder. Dbpro skal købes hvis det skal bruges udenfor IDE (altså udenfor dit programmeringsmiljø)
Iøvrigt har du dbrxrichedit.... så kunne du printe både tekst og billedet ud)
Avatar billede stone Forsker
05. september 2003 - 21:55 #11
her er koden til at udskrive et billede fra dbimage.

var
  r:TRect;
begin
with printer do
begin
BeginDoc;
  r.top:=0;//x
  r.left:=0;//y
  r.Right:=r.top+dbimage1.Picture.Width*300 div 75;
  r.Bottom:=r.left+dbimage1.Picture.Height*300 div 75;
  Canvas.StretchDraw(r,dbimage1.picture.Graphic);
EndDoc;
end;
end;
Avatar billede uthsen Nybegynder
05. september 2003 - 22:01 #12
Nu der det sådan ud under min printerknap:
var
Line:Integer;
PrintText:System.Text;// udskriver indhold i memo/richedit
begin
if PrintDialog1.Execute then
begin
History.lines.add(DBRichEdit1.text);
AssignPrn(PrintText);
ReWrite(PrintText);
Printer.Canvas.Font := History.Font;
for Line :=0 to History.Lines.Count - 1 do
Writeln(PrintText, History.Lines[Line]);
System.Close(PrintText);
end;
end;

Teksten bliver skrevet ud i en smal stribe, og fylder derved ikke A4 papiret ud.Ej heller skriver den udskriften ud med records-font.
At Dbpro skal købes hvis det skal bruges udenfor IDE (altså udenfor dit programmeringsmiljø), vil det sige jeg skal købe den, når det er til privat brug?
Hvordan får jeg fat i den?
Du skriver jeg har dbrxrichedit...Hvor finder jeg den? :)
Uden det du skiver her--Kan det så ikke lade lig gøre?
Avatar billede uthsen Nybegynder
05. september 2003 - 22:26 #13
Skriver nu ud i hele A4 Sidens bredde
Avatar billede uthsen Nybegynder
05. september 2003 - 22:28 #14
Hvad skal jeg skrive for at få den til at skrive i den font jeg har på min pc-skærm?
Avatar billede stone Forsker
05. september 2003 - 22:36 #15
I din dbrichedit kan du vælge den font som den skal have som standard

Tryk på din dbrichedit - og gå til object inspector og vælg font - flyt musen til Tfont og dbclick med musen - nu kan du vælge din font som din dbrichedit skal bruge som standard.

Her er linket hvor du kan downloade dbpro: http://www.imgsoft.com/download.htm

Den virker også perfekt i quickrep - når man søger efter bøf med løg, bliver alle andre sorteret fra - og når du derefter kalder din quickrep bliver kun den vist.
Avatar billede uthsen Nybegynder
05. september 2003 - 23:00 #16
Det der med font i dbrichedit objekt inspektor kan jeg godt se. Nu er det bare sådan, at når jeg skriver en opskrift på bøf ind  kan jeg vælge forskellige skrifttyper, overskrifter osv. Dvs hver side indeholder forskellige fonts og tekststørrelser. Det printes jo ikke ud, når jeg vælger linien:
Printer.Canvas.Font := DBRichEdit.Font;
nærmest skulle det hedde noget i retning af:
Printer.Canvas.Font := DBRichEdit.DataField.Note.Font; Hvilket det selvfølgelig ikke kan! IH Guder hvor er det svært!!!
Du kan godt se jeg er ikke god til at kode ...så når du nu lige kan finde bøf med løg i Quickrep...vær så lige sød at omforme koden til at lede i min Quickrep.
Jeg går til dit link :)
Avatar billede stone Forsker
05. september 2003 - 23:43 #17
næ..men så sletter du bare den linie
Printer.Canvas.Font := History.Font;
så er det den aktuelle valgte font der bliver udskrivet, hvis du har tilknyttet en fontdialog til din dbrichedt.

I dbpro skal der ikke skrives nogen kode undtagen hvis filterresultat skal slettes, for at kunne se alle dine posteringer igen.

dbfilterpanel1.ClearValues;  //sletter værdien i felterne
Avatar billede stone Forsker
05. september 2003 - 23:52 #18
opsætning af dbpro:

den mest brugte funktion i componentet dbpro er dbfilterpanel(herved undgår du engelske ord), hvor du i datasource vælger datasource1, herefter fremkommer der flere felter med muligheder for at søge med and or osv.. de felter and or er ikke nødvendig
i dit tilfælde de kan fjernes ved at vælge "countoptions" og sætte den til coOne
Det her er opsætningen inden du compiler dit project.
Avatar billede uthsen Nybegynder
06. september 2003 - 01:38 #19
Nu har jeg dbpro
Hvor skal jeg placere dbfilterpanel- På Startsiden eller på Quickrep?
Er dbfilterpanel-komponenten, den eneste jeg skal have på formen?
Har nu placeret dbfilterpanel på min startside og sat den op som du beskriver.
Hvad skal aktiveres-tænker her på bla. events
Du bliver altså nød til at guide mig igennem....ik'
Avatar billede stone Forsker
06. september 2003 - 08:53 #20
Det pæneste vil være at:
placerer din dbfilterpanel på en anden form, og så kalde din form f.eks
hvis din form hedder form2 skriver du: form2.showmodal;

showmodal gør at form2 ikke forsvinder hvis man prøver på at klikke på form1
dbfilterpanel er det eneste du skal have på din form2
I din form2 sætter du den til at use unit fra form1, det gør du sådan:
gå til file - use unit her får du valget at use unit1. Det er for ikke at skal gentage brugen af datasource osv i din form2.
Avatar billede stone Forsker
06. september 2003 - 15:43 #21
how....glemte lige en vigtig ting

I din dbfilterpanel skal du sætte filtred:= true
Avatar billede uthsen Nybegynder
06. september 2003 - 21:10 #22
YES, YES, YES, nu printes der både billede og tekst! Nu er det bare sådan,
at "Bøf med løg" fylder flere A4 sider:. Nu printes kun den første A4 side af " Bøf med løg" og det går jo ikke!! Hvor og hvordan ændre jeg det?

Hvor og hvordan skriver i events til filterpanel, at søgning skal udføres når jeg trykker på ENTER-tasten. Og ikke, som jeg har nu under(onEditExit), hvor der skal trykkes på en knap før Quickrep. vises
Avatar billede stone Forsker
06. september 2003 - 23:19 #23
Det kan være din printer ikke kan se om der er flere sider,
når du udskriver din rapport, skal du gå til printeropsætning,

prøv at indsætte indsætte en pagefooderband, her indsætter du qrsysdata1

eller det kan være i quickrep, hvor du skal gå til object inspector og se under options -
firstpageheader true
firstpagefooder true

nu kender jeg ikke dine felter i dbfilterpanel, hvis du har en ret der hedder bøf vil søgningen starte allerede ved det første bogstav, da "bø" ikke forkommer ret tit.
når din søgning starter bliver alle ikke relevante data sorteret fra
så kalder du din Form1.quickrep1.preview, funktionen kan du tilegne en Tbutton
efter at quickrep bliver vist vises kun det søgte data.
Avatar billede uthsen Nybegynder
07. september 2003 - 05:02 #24
Har i quickrep sat :
firstpageheader true
firstpagefooder true
Dette bevirkede at der nu er flere sider på " Bøf med løg"(ialt er denne opskrift på 3 sider), men det er stadig kun første side af opskriften der vises på alle 3 sider i preview/print.

Du skriver:prøv at indsætte indsætte en pagefooderband, her indsætter du qrsysdata1

Hvad er det? og hvor finder jeg det?
Avatar billede stone Forsker
07. september 2003 - 10:23 #25
den finder du i object inspector under band //tryk på din quickrep på din form
vælg haspagefooder true
vælg haspageheader true
Avatar billede stone Forsker
07. september 2003 - 10:46 #26
qrsysdata1 finder du på fanebladet qreport nr10 fra venstre
Avatar billede stone Forsker
07. september 2003 - 12:13 #27
måske det her er grunden, til at quicprep kun udskriver 1 side:

eller gå til faq: http://www.qusoft.com //download kb.zip

Q.  I am trying to print a report on a HP5P using a top margin of 4mm, but only the first page comes out.
A.  We have had reports of a problem with the driver for the HP5P where it could not handle that margin size.  The work around would be to use the HP6 driver with this printer.
Avatar billede uthsen Nybegynder
07. september 2003 - 14:39 #28
Har fundet data sys og:
Har gjort som du har beskrivet, men jeg har fundet ud af,at i preview kommer kun den første del af alle opskrifter med. Der er altså ikke kun problemer med de opskrifter som fylder mere end 1 side.(Alle kan records vises)
Prøver at arbejde videre. Målet må snart være nået!! Godt gået Stone
Avatar billede uthsen Nybegynder
07. september 2003 - 14:46 #29
I preview ses altså 3 sider, men alle 3 sider er ens og viser kun omskriftens første side!
Avatar billede stone Forsker
07. september 2003 - 16:06 #30
prøv at kigge på dine indstillinger i dbfilterpanel,måske ligger fejlen der.
ellers ved jeg ikke hvorfor den ikke viser alle sider på den søgte record.
husk at gemme dit project jævnligt, hvis der skulle opstå problemer kan du genskabe det ved at omdøbe de backup filer som fremstår når du gemmer dit project.
eller giv dig tid til at studere kb.zip fra qsoft eller de andre hjælpefiler.
for at se hjælp på en component - marker den og tryk F1, det virker også på de
funktioner der er i object inspector.
Avatar billede uthsen Nybegynder
07. september 2003 - 18:15 #31
Hvorfor er du så sikker på det er printerens opsætning?
Avatar billede uthsen Nybegynder
07. september 2003 - 18:28 #32
Tak for dine tips!! Det er dejligt at blive klogere.
Har set nærmere på QuickReportFAQ.doc
Og fandt bla dette:

Q.  I have a report that prints fine on a HPIII printer but not on the HP4.  Either the text is missing, or the bands print black.
A.  There have been many reports of problems with the HP4 (and HP5) printers.  You should make sure that you are using the current driver from HP's web site (http://www.hp.com/cposupport/jsnav/prhome.html).  You may also need to check the page protect option in the printer driver and/or set the DPI to 300.

Men den hjemmeside findes desværre ikke mere!
Nu gik det ellers så godt!!
Arbejder videre på problemet, men ved du hvad. Nu har du jo været så sød, at hjælpe mig til at kunne printe både billede og Tekst udenfor Quickrep. Jeeg kan nu printe først billedet på A4 papir nr.1 og Teksten på A4 papir nr.2.
Kan du ikke ændre i koden, sådan at både billede og tekst printes på samme ark?

Min kode ser sådan ud(har selv prøvet mig lidt frem, men desværre går den død):
procedure TPrintValg.Image3Click(Sender: TObject);

var
Line:Integer;
    r:TRect;
PrintText:System.Text;// udskriver indhold i memo/richedit
begin
if PrintDialog1.Execute then
begin
  with printer do
  begin
BeginDoc;
  r.top:=0;//x
  r.left:=0;//y
  r.Right:=r.top+start.dbimage2.Picture.Width*150 div 75;
  r.Bottom:=r.left+start.dbimage2.Picture.Height*150 div 75;
  Canvas.StretchDraw(r,start.dbimage2.picture.Graphic);
EndDoc;

Start.History.lines.add(Start.DBRichEdit1.text);
AssignPrn(PrintText);
ReWrite(PrintText);
Printer.Canvas.Font := Start.History.Font;
for Line :=0 to Start.History.Lines.Count - 1 do
Writeln(PrintText, Start.History.Lines[Line]);
System.Close(PrintText);
end;
end;
  end;

Ellers må jeg prøve at leve med det---og det er svært!
Forresten kunne jeg heller ikke finde ud af at rette i koden, således printet bevarede den af brugeren valgte tekstformatering. Er det umuligt at give dig flere point for din tålmodighed og hjælp?
Avatar billede stone Forsker
07. september 2003 - 19:10 #33
udskriftfonten er sat := dbrichedit fonten det er standard ved udskrift
ved at smide en printdialog på din form, og skrive:

if fontdialog1.Execute then
richedit1.Font := fontdialog1.Font;//brugerens valg af font før udskrivning

point er kun en sidegevinst det som drejer sig om er at hjælpe - 200 er rigeligt.

her er det rigtige link:

http://h20015.www2.hp.com/en/siteHome.jhtml;jsessionid=ADTQRHJ30E40RQEXGR3UNZQ?reg=na&cc=us&pagetype=sitehome&lc=en&

Det er ikke muligt at printe tekst og billede på samme a4 udenfor quickrep, undtagen hvis du bruger dbrxrichedit fra rxlib.com //kan ikke finde deres hjemmeside
men jeg har rxlib hvis du vil have det tilsendt via mail
Avatar billede stone Forsker
07. september 2003 - 20:40 #34
hvis du bruger begge funktioner, til den samme control, dannes der en printerkø

det kan være det er derfor den går død.

til din kode som skal rettes for at brugerens egen valgte font udskrives, slettes denne linie:
Printer.Canvas.Font := Start.History.Font;
brug da:

if fontdialog1.Execute then
richedit1.Font := fontdialog1.Font;//brugerens valg af font før udskrivning
som kan tilknyttet en control som en Tbutton eller lign.
Avatar billede stone Forsker
07. september 2003 - 22:37 #35
jeg har lavet et testprogram, som virker som det skal.

den viser alle sider i rapport// med nr 1-4
den udskriver alle sider i rapport
den udskriver grafik i rapport//på samme side
grunden til at du ikke får udprintet alle sider kan være at du ikke har lagt din qrdbrichedit i detailband1.

udskriften er lavet på en hpg85 officejet, med de nye drivere installeret.

Iøvrigt bruger jeg quickreport 3.05 Delphi5 Interprise
Avatar billede uthsen Nybegynder
07. september 2003 - 23:48 #36
Arbejder lige på det du skriver....
Ih! Ja tak, jeg vil gerne have tilsendt rxlib. Min mail adresse er:
uthsen@uthsen.dk
Avatar billede stone Forsker
08. september 2003 - 00:28 #37
sendt
Avatar billede uthsen Nybegynder
08. september 2003 - 08:17 #38
Tak skal du have.
Jeg prøver at gå tilbage og starter forfra.
Avatar billede uthsen Nybegynder
08. september 2003 - 10:16 #39
Kan du ikke sende mig dit testprogram, så jeg kan sammenligne og derved måske løse problemet?
den viser alle sider i rapport// med nr 1-4
den udskriver alle sider i rapport
den udskriver grafik i rapport//på samme side
grunden til at du ikke får udprintet alle sider kan være at du ikke har lagt din qrdbrichedit i detailband1.
Avatar billede stone Forsker
08. september 2003 - 13:26 #40
programmet gør brug af en anden database, som gør at du ikke kan compile
det, men jeg sender det til dig alligevel, så kan du idet mindste se mine indstillinger i qrapport.
Avatar billede stone Forsker
08. september 2003 - 13:35 #41
slet den første tilsendte testprogram, food.exe indeholder en forkert sti til databasen.

sender en ny.
Avatar billede uthsen Nybegynder
08. september 2003 - 18:40 #42
Kære Stone!
DET VAR EN HÅRD FØDSEL!
Nu virker min quickrep1, og den finder den valgte opskrift og kan printe det hele fint og nydeligt. Desværre fattede jeg ikke hvad det var der, der fik det til at virke. Jeg mener jeg bare satte autostrech til, men jeg har en anden quickrep2, som skal printe alle opskrifter. Her gjorde jeg så det samme, den tager alle opskrifter, men kun en del af hver (altså samme problem som før)!!! Jeg synes ikke at kan se forskellen på quickrep1 og quickrep2
Skal vi lukke her, så du kan få dine point for din store hjælp?, eller synes du vi skal holde det åbent til jeg måske finder løsningen i quickrep2?
Takker meget og mange gange for det tilsendte!!!
Lige til sidst:
Hvorfor kan man godt skrive Botton1.click , men ikke Image1.click?
Hvad er forskellen?---når jeg nu hellere vil klikke på et billede end en knap!
Avatar billede stone Forsker
08. september 2003 - 19:32 #43
lad os bare lukke spørgsmålet da strengen bliver for lang.

du kan ikke have 2 instanser af quickrep på en gang, den ene skal lukkes.
Det fremgår også i kb.zip som indeholder hjælp til quickrep (faq)

Image1 har en clickevent, den kan du bare bruge, der er ingen forskel i at bruge button1.click eller image1.click
Avatar billede uthsen Nybegynder
08. september 2003 - 19:32 #44
Måske jeg må sende dig en kopi af mit program ?
Avatar billede stone Forsker
08. september 2003 - 20:03 #45
det nå du gerne

steenlarsen@it.dk
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging