Avatar billede anold Nybegynder
29. januar 2001 - 11:09 Der er 28 kommentarer og
1 løsning

Udskrivnng på begge sider

Jeg har et skema som f.eks er lavet i Q-report dette skemavil jeg gerne have delphi til at Udskrive på begge sider af papiret på en HP laiserjet 4si
Hvordan gør jeg det???
Avatar billede pellelil Nybegynder
29. januar 2001 - 11:12 #1
QR er udmærket til mange ting, men har sine berænsninger (herunder Duplex Print). Kig evt. i stedet på FreeReport (som eftersigende ikke skulle ha\' duplex problemer - har ikke selv prøvet): http://www.adwin.ru/dinfo/eng/freereport/
Avatar billede pstric Nybegynder
29. januar 2001 - 12:59 #2
Kan QR heller ikke udskrive i Duplex, hvis brugeren har valgt duplex i printerkonfigurationen?
Avatar billede pellelil Nybegynder
29. januar 2001 - 13:08 #3
Jeg har ikke selv haft brug for Duplex print, så min udtalelse er pba. en x-kollega\'s erfaringer (men til hans forsvar så plejer han at vide hvad han snakker om - så jeg har ikke set grund til at ikke stole på at han har ret).
Avatar billede anold Nybegynder
29. januar 2001 - 13:17 #4
Lad os nu sige at QR godt kan printe ud i duplex
hvordan styre jeg så hvad der skal printes ud på den ene side og hvad der skal printes ud på den anden side ??

Pellelil, jeg har hentet \"din\" komponent men hvordan installere jeg den ?
Avatar billede pstric Nybegynder
29. januar 2001 - 13:17 #5
Det var trist, men ellers kunne man jo bare i QR\'s BeforePrint (okay, bare og bare)

1. kalde DeviceCapabilities, o gfinde ud af om printeren har DC_DUPLEX
2. kalde DocumentProperties (fMode=0) for at finde størrelsen af DEVMODE
3. kalde DocumentProperties (fMode=DM_OUT_BUFFER) og hente printerens indstillinger
4. sætte DEVMODE\'s dmDuplex til DMDUP_HORIZONTAL eller DMDUP_VERTICAL
5. kalde DocumentProperties (med fMode sat til DM_IN_BUFFER) for at modify printerens indstilling.
Avatar billede pstric Nybegynder
29. januar 2001 - 13:19 #6
Hov, min kommentar var til Pellelil.
Avatar billede pstric Nybegynder
29. januar 2001 - 13:21 #7
anold>> Hvis du nu kan få det til at virke, så skal du lave en OnStartPage handler, der \'vender\' header og footer, så du altid får sidetal ud mod kanten.
Avatar billede pellelil Nybegynder
29. januar 2001 - 13:24 #8
Du Unzipper den (husk at \"Extract\'e\" den med under-foldere). Jeg har valgt at installere den i C:\\Programmer\\Borland\\Delphi5\\FreeReport\\...\". Når du har gjort dette finder du readme.txt filen som beskriver den vidre installation (bemærk beskrivelsen af FR_Eng.LNG som skal omdøbes til FR.LNG og kopieres ind i din windows folder).
Avatar billede anold Nybegynder
30. januar 2001 - 07:28 #9
Hallo er der nogle hjemme ??
Der må da være en som kan fortælle mig hvordan jeg styre hvad der skal printes ud på den ene side og hvad der skal printes ud på den anden side ??

Avatar billede anold Nybegynder
31. januar 2001 - 10:53 #10
ZZZZZZZzzzzz Hallo sover i derude ?? Er der virklig ingen der kan hjælpe mig med mit Duplex problem ??

PEllelil, Nu har jeg installeret komponenten.
Kan du ikke lave en beskrivelse på hvordan jeg bruger den så jeg kan printe mit egen skema (linjer og labels) ud på begge sider 

Hilsen Anold
Avatar billede pstric Nybegynder
31. januar 2001 - 11:38 #11
anold>> Hej igen, jeg har ikke lige tid til at kigge på det nu, men i eftermiddag har jeg nok bedre tid. Fik du installeret FreeReport eller vil du fortsat prøve med QR?

Jeg kan muligvis lave en lille rutine der skifter til duplex på printeren, men jeg kan ikke selv teste det, så du får nok nogel ting, der ikke virker. men vi må jo prøve os frem med lidt trail and error ;-)
Avatar billede pellelil Nybegynder
31. januar 2001 - 11:41 #12
Bruger du FreeReport (FR) så printes \"hver anden\" side på forsiden og \"hver andet\" på bagsiden\". Det er således rækkeflg. af siderne der bestemmer hvad der printes hvor. I modsætning til QuickReport (QR) så \"acceptere\" og bruger FR de printer indstillinger du laver i Delphi\'s Std. printer opsætnings dialog (det er således her at du kan vælge \"Duplex\").

FreeReport virker ikke på samme måde som QR. Når du med QR opbyggede en rapport så blev denne lagt ind i en resource og blev således automatisk en del af din EXE fil. De havde den fordel at du kun skulle distribuere din EXE fil, men på den anden side kunne slut brugerne ikke ændre på denne. Som default anvender FR eksterne rapport definitions filer (.FRF). Du kan dog selv flytte denne ind i en resource som du linker ind i din EXE fil (dette vil jeg dog ikke beskrive nærmere).

På en ny (eller \"hvis du er doven\" bestående) form indsætter en \"TfrReport\". Dernåst indsætter du en \"TfrDBDataSet\", hvis \"DataSource\" du sætter til at peget på den TTable/TQuery der indeholder de data du vil printe. Højreklik på TfrReport og vælg \"Dessign Report\". Hvis menuernes navne er FUBAR har du ikke læst installations vejledningen korrekt (vedr. FR.LNG). I skærmens venstre side finder du et ikon for \"Insert Band\" som du vælger, hvorefter du \"klikker\" i den tomme rapport og der kommer nu et billede der spørger hvilken \"båndtype\" der er tale om : vælg \"Master Data\". Højreklik på dit bånd og vælg Edit, hvorefter du vælger den datasource der skal tilknyttes dette bånd. Du er nu klar til at indsætte felter. Ovenover ikonet for bånd finder du ikonet for \"Insert Rectangle Object\" som du vælger og igen klikker du i båndet (som du lige har indsat). Dobbelt-klik på den \"Rektangle\" du netop har indsat, og du kan nu skrive \"teksten\". Hvis der er tale om \"lede tekst\" så skriver du bare det du vil, og hvis det er indholdet af et datafelt du vil vise så trykker du i stedet på knappen \"DB Field\" og dernæst plukker database/felt. Hvis du har gjort det korrekt kan du du i toppen af skræmen (det 4. ikon) vælge preview og se resultatet af din rapport.

Som du kan se har du ikke helt så mange komponenter du kan indsætte på din rapport og ved første øjekast ser det måske lidt billigt ud. Med in modsætning til QR så virker der. FR er i stand til at resize dine bands således at de automatisk skalere sig til eksempelvis størrelsen af et memofelt. Ligeledes kan du se at symbolerne for Fed, Kursiv og Understreget er russiske, men jeg har lavet nogle \"engelsk sprogede\" som jeg kan maile dig (jeg er ved at lave en danske version af FR.LNG, men denne er endnu ikke helt fejl fri)

VIGTIGT: Som nævnt tidligere så gemmes denne rapport IKKE sammen med din form så DU skal huske at gemme rapporten når du er inde i designeren. Nedenstående (delphi) kode viser således hvordan du under runtime kan loade en rapport (placeret i samme folder som din EXE fil) og preview\'e denne.

<SNIP>
var
  szPath : String;
begin
  szPath := ExtractFilePath(ParamStr(0));
  frReportMessage.LoadFromFile(szPath + \'Meddelelse.FRF\');
  frReportMessage.ShowReport;  // ShowReport = PreView
</SNIP>

Hvis du eksempelvis i databasen har nogle integer værdier, som du på udskriftstidspunktet vil erstattet med tekst værdier så løses dette ved at bruge \"TfrReport\'ens\" event \"OnGetValue\":

<SNIP>
procedure TFormRptMessages.frReportMessageGetValue(const ParName: String;
  var ParValue: Variant);
var
  iIdx    : Integer;
  szResult : String;
begin
  if ParName = \'tblMessageTable.\"TriggerType\"\' then begin
    iIdx := tblMessageTable.FieldByName(\'TriggerType\').AsInteger;
    szResult := \'N/A\';
    case iIdx of
      0 : szResult := \'CREATE\';
      1 : szResult := \'UPDATE\';
      2 : szResult := \'DELETE\';
    end;
    ParValue := szResult;
  end;
end;
</SNIP>
Avatar billede anold Nybegynder
31. januar 2001 - 13:45 #13
pstric

jeg vil gerne se hvad du kan lave for at hjælpe mig

Hilsen anold
Avatar billede anold Nybegynder
01. februar 2001 - 12:15 #14
Hej pellelil

Jeg arbejder stadig på at få mit duplex udskrift til at virke
i det eks. du giver mig henter jeg data fra min database men det er ikke lige det jeg ønsker, jeg vil gerne have tegnet nogle rammer på begge sider af papiret Kan man ikke det

Har du ikke et eks. du kan MAIL mig ??

Hilsen Anders
Avatar billede anold Nybegynder
01. februar 2001 - 12:41 #15
Hej pellelil

Hu hej hvor det går nu fik jeg endelig lavet det jeg ville.
så nu har jeg ikke brug for et eks.

MEN hvad skal jeg skrive i min Button3Click event for at printe uden at vise rapporten først?
Avatar billede delphi Nybegynder
01. februar 2001 - 12:44 #16
frReportMessage.PrintReport;  ??? Måske??

Peter.
Avatar billede delphi Nybegynder
01. februar 2001 - 12:47 #17
Du kan efter du har skrevet

frReportMessage.

dvs, når du står med cursoren efter punktummet, så tryk Ctrl+Space (eller er det Shit+Ctrl+Space), så får du en oversigt over de procedure/funktioner/properties der er kendt på det pågældende sted.  Mon ikke en PrintReport eller noget lignende dukker op. 
Som de siger i reklamerne: Prøv det!

Peter
Avatar billede delphi Nybegynder
01. februar 2001 - 12:48 #18
suk...mit tastatur er håbløst!  Shit+Ctrl....  suk!
Avatar billede pellelil Nybegynder
01. februar 2001 - 13:11 #19
Det er nemt (når man bare ved hvordan)

<SNIP>
  if Rapport1.PrepareReport then begin
    Rapport1.PrintPreparedReport(1, Rapport1.EMFPages.Count, 1, True);
  end;
</SNIP>
Avatar billede anold Nybegynder
01. februar 2001 - 13:16 #20
ja det er det sikkert !!

[Error] Hovede.pas(193): Undeclared identifier: \'Rapport1\'
[Error] Hovede.pas(191): Undeclared identifier: \'PrepareReport\'

hvad skal jeg gøre ved disse fejl???
Avatar billede pellelil Nybegynder
01. februar 2001 - 13:18 #21
:-(  Istedet for Rapport1 skal du naturligvis skrive navnet på din TfrReport
Avatar billede anold Nybegynder
01. februar 2001 - 13:20 #22
JA tak den havede jeg også regnet ud :0)
men hvad med denne fejl
[Error] Hovede.pas(191): Undeclared identifier: \'PrepareReport\'


Avatar billede anold Nybegynder
01. februar 2001 - 13:29 #23
Hej pellelil

hvad skal der stå ved (1,rapport1.EMF......)

if FrmPrint.frReport1.PrepareReport then
begin
  FrmPrint.frReport1.PrintPreparedReport(1, Rapport1.EMFPages.Count, 1, True);
  end;
Avatar billede pellelil Nybegynder
01. februar 2001 - 13:32 #24
PrepareReport er en methode til din TfrReport, så for at kunne bruge en TfrReport skal du use FR_Class.

Øhh kan du da ikke læse det er stå nu ? I så fald vil jeg foreslå at du pudser din skærm :-) Hvis du i stedet spøge om hvad parametrene betyder så kan jeg sige at det er (i nævte rækkeflg):
- Start Side
- Slut side
- Antal kopier
- Collate

Avatar billede pellelil Nybegynder
01. februar 2001 - 13:41 #25
Flg. er et direkte cut fra et af mine programmer OG DET VIRKER  :-)

<SNIP>
  frReportMessage.LoadFromFile(szPath + \'Meddelelse.FRF\');
  if frReportMessage.PrepareReport then begin
    frReportMessage.PrintPreparedReport(1, frReportMessage.EMFPages.Count, 1, True);
  end;
</SNIP>
Avatar billede anold Nybegynder
02. februar 2001 - 08:45 #26
Hej pellelil

når jeg printer min rapport fra mit program får jeg denne fejl :
List out of bounds(0)

i min SpeedButton6Click står der :

procedure TFrmHovede.SpeedButton6Click(Sender: TObject);
begin
if FrmPrint.frReport1.PrepareReport then
begin
  FrmPrint.frReport1.PrintPreparedReport(1, FrmPrint.frReport1.EMFPages.Count, 1, True);
  end;
end;

Jeg kom til og tænke på skal programmet ikke vide hvad filen hedder (C:\\FormKort\\Print.FrF)

Hilsen anold




Avatar billede pellelil Nybegynder
02. februar 2001 - 08:49 #27
Joh det skal den og hvis du kigger på mit eksempel lige ovenover din kommentar, så ser du (bur du se) at jeg kalder \"frReportMessage.LoadFromFile(szPath + \'Meddelelse.FRF\');\" hvilket i dit tilfælde i stedet skulle være: \"FrmPrint.frReport1.LoadFromFile(\'C:\\FormKort\\Print.FrF\');\"
Avatar billede anold Nybegynder
02. februar 2001 - 09:42 #28
Hej pellelil
Det L... bliver ved med og drille mig

når jeg printer så får jeg en fejl på at \"Result := nil\"

Hved du hvad jeg gør forkert ?

Jeg har ingen band på min rapport men kun richtext

Hvis du vil (og har tid/lyst) kan jeg Mail mit program til dig så du kan se hvad det er jeg gør forkert!!

Hilsen Anold


{----------------------------------------------------------------------------}
function frCreateObject(Typ:Byte; const ClassName:String): TfrView;
var i: Integer;
begin
  Result := nil;
  case Typ of
    gtMemo:      Result := TfrMemoView.Create;
    gtPicture:  Result := TfrPictureView.Create;
    gtBand:      Result := TfrBandView.Create;
    gtSubReport: Result := TfrSubReportView.Create;
    gtAddIn:
      begin
        for i := 0 to frAddInsCount-1 do
          if frAddIns[i].ClassRef.ClassName = ClassName then
          begin
            Result := TfrView(frAddIns[i].ClassRef.NewInstance);
            Result.Create;
            Result.Typ := gtAddIn;
            break;
          end;
        if Result = nil then // her kommer fejlen
          raise EClassNotFound.Create(\'Íå íàéäåí êëàññ \' + ClassName);
      end;
  end;
end;
Avatar billede pellelil Nybegynder
02. februar 2001 - 10:30 #29
Anold> jeg har hverken tid eller lyst :-(

MEN: jeg vil umiddelbart gætte på at din rapport SKAL have mindst et band
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