Avatar billede kennethv Nybegynder
04. august 2006 - 10:50 Der er 30 kommentarer og
1 løsning

Mangler liiige 2 ting.

Jeg har 2 små problemer jeg håber at det kan klares ganske smertefrit. :)

1. I designtime har jeg sat RichEdit font til Microsoft Sans Serif, men det er ikke den font der bliver skrevet ud når jeg printer. Hvad er årsagen til dette?

2. I min RichEdit har kan jeg lave indryk med TAB, men når jeg laver en bullet kommer den til at være i starten af den linie istedet for der hvor indryk er. Hvad kan det skyldes?
Avatar billede martinlind Nybegynder
04. august 2006 - 11:15 #1
1. der er noget med at man på nogle printere skal vælge om den skal køre med True-Type fonte eller ej, din er sat til ej, og har ikke en MS Sans Serif

2. det er vel fordi din TAB chr. ligger efter din bullet og ikke før
Avatar billede hrc Mester
04. august 2006 - 11:22 #2
Dit rave-printerobjekt har sin egen font-indstilling - og den må passe til din TRichEdit's.
Avatar billede kennethv Nybegynder
04. august 2006 - 12:11 #3
Vil I kunne hjælpe mig med noget kode?
Avatar billede martinlind Nybegynder
04. august 2006 - 13:57 #4
noget i den her stil :

RaveReport.Font.Assing(RichEdit1.Font);
Avatar billede hrc Mester
04. august 2006 - 16:53 #5
Lige præcis.
Avatar billede kennethv Nybegynder
04. august 2006 - 17:18 #6
Har I en ide til det med Bullets?
Avatar billede kennethv Nybegynder
04. august 2006 - 17:19 #7
Hov, iøvrigt laver jeg en TAB før jeg laver bullet.
Avatar billede kennethv Nybegynder
05. august 2006 - 11:23 #8
Prøvet dette:

RaveReport.Font.Assing(RichEdit1.Font);

Ingen fejl opstår, meeen den font som RichEdit1 har bliver ikke brugt.
Avatar billede kennethv Nybegynder
05. august 2006 - 19:06 #9
Kan nogen hjælpe mig med, hvorfor at det ikke virker. Dette her er min procedure:

procedure TMalerMainForm1.RvSystem1Print(Sender: TObject);
var
  MemoBuf: TMemoBuf;
  Stream: TMemoryStream;
begin
  with sender as TBasereport do
  begin
    MemoBuf := TMemoBuf.Create;
    SetFont('Microsoft Sans Serif',11);
    MemoBuf.BaseReport := Sender as TBaseReport;
    try
      LineNum := 5;
      PrintLeft(DBEdit5.Text,2.0);
      LineNum := 6;
      PrintLeft('Att:'+DBEdit9.Text,2.0);
      LineNum := 7;
      PrintLeft(DBEdit6.Text,2.0);
      LineNum := 8;
      PrintLeft(DBEdit7.Text+' '+DBEdit8.Text,2.0);
      LineNum := 10;
      PrintRight(DBEdit4.Text,19.0);
      LineNum := 14;
      Bold := true;
      Underline := true;
      PrintCenter('Overslagspris nr. '+DBEdit2.Text, PageWidth / 2);
      Font.Assign(DBRichEdit1.Font);
      LineNum := 16;
      MemoBuf.RichEdit := TRichEdit(DBRichEdit1);
      MemoBuf.PrintStart := 2.0;
      MemoBuf.PrintEnd := 19.0;
      While not MemoBuf.Empty do
      begin
        MemoBuf.PrintHeight(SectionBottom - LineTop,false);
        If not MemoBuf.Empty then
        begin
          NewPage;
        end;
      end;
    finally
      MemoBuf.Free;
    end;
  end;
end;
Avatar billede kennethv Nybegynder
07. august 2006 - 09:39 #10
Er der nogen der kan hjælpe mig?
Avatar billede hrc Mester
07. august 2006 - 10:04 #11
Hvad er det der ikke virker? Kommer der noget på udskriften eller slet intet overhovedet. Sker der access violations? Har efterlyst det før og nu gør jeg det igen. Bedre information om hvad der sker, tak!

Jeg har kigget lidt på det - men ikke testet noget. Synes ikke det er kønt kodet med globale variable og den slags, men det prøver jeg at abstrahere fra. Havde nok prøvet at lave min egen printer-klasse.

Prøv dette først. Der kan være et sammenfald med formens egen font:

var
  BaseReport : TBaseReport;
begin
  BaseReport := Sender as TBasereport;

  MemoBuf := TMemoBuf.Create;
  try
    MemoBuf.BaseReport := BaseReport;
    BaseReport.Font.Assign(RichEdit1.Font);
    ...

Har du testet om din løkke bliver udført?
Avatar billede kennethv Nybegynder
07. august 2006 - 15:59 #12
Søde rare HRC,

Jeg har nævnt hvad der sker. Der sker intet. Ingen fejl, men det er ikke den font der bliver brugt.

Den beskrivelse du har lavet findes ikke:
BaseReport.Font.Assign(RichEdit1.Font);

Den hedder:
BaseReport.Fonts.Assign(RichEdit1.Font);

Og den rejser en access violation.
Avatar billede hrc Mester
07. august 2006 - 20:02 #13
Jeg fandt en font-property her: MemoBuf.BaseReport.Canvas.Font.Assign(reText.Font);
Prøver selv at lege lidt med det da jeg altid neglisierer det med udskrifter. Når så det kommer til stykket bliver jeg nødt til at lave dem helt fra bunden.
Avatar billede hrc Mester
07. august 2006 - 20:29 #14
Nå, men det virker altså ikke (det står også i dokumentationen). Det her gør:

var
  MemoBuf : TMemoBuf;
begin
  MemoBuf := TMemoBuf.Create;
  try
    MemoBuf.BaseReport := (Sender as TBaseReport);
    MemoBuf.BaseReport.AssignFont(reText.Font);
    MemoBuf.BaseReport.Println('Hello my world');
  finally
    MemoBuf.Free;
  end;
end;
Avatar billede kennethv Nybegynder
08. august 2006 - 10:02 #15
Jeg er helt overbevist om at det du har lavet virker, men jeg kan ikke få det til at virke.

Men den måde jeg udskriver på er lidt anderledes end det du gør. Jeg gør sådan her:

procedure TMalerMainForm1.RvSystem1Print(Sender: TObject);
var
  MemoBuf: TMemoBuf;
  Stream: TMemoryStream;
  BaseReport : TBaseReport;
begin
  with sender as TBasereport do
  begin
    MemoBuf := TMemoBuf.Create;
    SetFont('Microsoft Sans Serif',11);
    MemoBuf.BaseReport := Sender as TBaseReport;
    try
      LineNum := 5;
      PrintLeft(DBEdit5.Text,2.0);
      LineNum := 6;
      PrintLeft('Att:'+DBEdit9.Text,2.0);
      LineNum := 7;
      PrintLeft(DBEdit6.Text,2.0);
      LineNum := 8;
      PrintLeft(DBEdit7.Text+' '+DBEdit8.Text,2.0);
      LineNum := 10;
      PrintRight(DBEdit4.Text,19.0);
      LineNum := 14;
      Bold := true;
      Underline := true;
      PrintCenter('Overslagspris nr. '+DBEdit2.Text, PageWidth / 2);
      MemoBuf.BaseReport.AssignFont(DBRichEdit1.Font);
      LineNum := 16;
      MemoBuf.RichEdit := TRichEdit(DBRichEdit1);
      MemoBuf.PrintStart := 2.0;
      MemoBuf.PrintEnd := 19.0;
      While not MemoBuf.Empty do
      begin
        MemoBuf.PrintHeight(SectionBottom - LineTop,false);
        If not MemoBuf.Empty then
        begin
          NewPage;
        end;
      end;
    finally
      MemoBuf.Free;
    end;
  end;
end;
Avatar billede hrc Mester
08. august 2006 - 22:14 #16
Skal jeg prøve at maile dig mit test-program (hrc_public at hotmail)? Jeg har en font-dialog hvori jeg ændrer fonten i min TRichedit til Windings, skriver et eller andet for derefter at udskrive det til skærm.

Kan ikke lige regne ud om der sker noget om du prøver at bytte rundt på disse to linier:

      MemoBuf.BaseReport.AssignFont(DBRichEdit1.Font);
      LineNum := 16;
      MemoBuf.RichEdit := TRichEdit(DBRichEdit1);

Kommer der intet på din udskrift - heller ikke headeren?
Avatar billede kennethv Nybegynder
09. august 2006 - 01:00 #17
Det hele kommer ud. Alt hvad der står i de forskellige DBEdit kommer ud og i den rigtige font. Det der står i MemoBuf kommer også ud, men ikke i den font som DBRichEdit har. Det virker som om det er en standard font. Hvis jeg i designtime ændre fonten på DBRichEdit Times New Roman kan jeg se teksten "DBRichEdit1" som står i komponenten ændre sig, men når man kører programmet og skal til skrive noget, er det IKKE Times New Roman, men en anden font. Sikkert standard.

Jeg har prøvet det du efterlyser. Samme status. :(
Avatar billede martinlind Nybegynder
09. august 2006 - 10:59 #18
noget kunne jo tyde på at TMemoBuf har et problem ??, hvad er det for en ting ??
Avatar billede kennethv Nybegynder
10. august 2006 - 13:44 #19
Jeg beklager meget, hvis jeg ikke lige får skrevet hurtigt tilbage, men jeg er lige blevet far for 2. gang igår, sååå det går ikke helt så stærkt. :)

Jeg tror ikke helt jeg forstår dit spørgsmål MartinLind. Det eneste jeg kan sige er at det er lavet sådan:

procedure TMalerMainForm1.RvSystem1Print(Sender: TObject);
var
  MemoBuf: TMemoBuf;
  Stream: TMemoryStream;
  BaseReport : TBaseReport;
begin
  with sender as TBasereport do
  begin
    MemoBuf := TMemoBuf.Create;
    SetFont('Microsoft Sans Serif',11);
    MemoBuf.BaseReport := Sender as TBaseReport;


Men jeg har prøvet at lave en almindelig RichEdit i min program og det spiller. Den RichEdit jeg bruger er en DBRichEdit. Kan der være en forskel?
Avatar billede martinlind Nybegynder
10. august 2006 - 14:10 #20
er TMemoBuf en TRichEdit ??

Hvis det spiller med en alm. RichEdit, kan du jo bare lave et lille "hack" og køre via en aml. når du printer :)
Avatar billede kennethv Nybegynder
10. august 2006 - 14:39 #21
Om TMemoBuf er en TRichEdit?

Det tror jeg nok. Du hjalp mig ihvertfald med et andet problem jeg havde, hvor jeg godt ville have indhold af en DBRichEdit udskrevet:
http://www.eksperten.dk/spm/723203

Hvordan skulle det lille "hack" se ud?
Avatar billede martinlind Nybegynder
10. august 2006 - 16:50 #22
flyt data fra din dbrichedit til en alm. richedit inden du skriver ud, dvs. flytte hver gang du får en ny record
Avatar billede kennethv Nybegynder
10. august 2006 - 18:06 #23
Men er det ikke detman gør her:

      MemoBuf.RichEdit := TRichEdit(DBRichEdit1);
Avatar billede kennethv Nybegynder
11. august 2006 - 15:57 #24
Nogen ideer?
Avatar billede hrc Mester
12. august 2006 - 08:43 #25
Kunne du ikke bruge det eksempel jeg sendte dig? Der er der 3 forskellige måder at skrive ud på - en hvor jeg bl.a. bruger richedit-propertyen. Hvis TDBRichEdit nedarver fra TRichEdit, så burde du bare kunne erstatte min TRichEdit.

I øvrigt, med den snak om at programmere det fra bunden i stedet for at skulle lære endnu en mærkelig udskriftspakke at kende. Vi havde nok været færdige forlængst.
Avatar billede kennethv Nybegynder
12. august 2006 - 09:40 #26
Jeg har set på det du har sendt til, men det ser ud til at der mangler en test.rav fil.

Det du snakker om med at lave det fra bunden. Hvad er det? Kan man gøre anderledes? Jeg troede at RaveReport var den eneste mulighed! Jeg vil tillade mig at sende det jeg selv har lavet til dig, så du kan se problemmet.
Avatar billede kennethv Nybegynder
12. august 2006 - 12:50 #27
En ekstra lille ting. Jeg kunne godt se din pointe i det kode du har sendt til mig og jeg har prøvet dem af og det ser ud til at mulighed 2 virker med fonten også.

Har du en ide til punkt 2?

Point sættes op til 100.
Avatar billede kennethv Nybegynder
12. august 2006 - 23:50 #28
Hej HRC.
Jeg tror at jeg var en lille smule for hurtigt, for godt nok kommer teksten ud, men bullet og understregning kommer ikke med.
Avatar billede hrc Mester
13. august 2006 - 12:26 #29
Når du trykker på "udskriv"-knappen, løber du så teksten igennem og indsætter de bullets som du vil have? Når den kobles på rave skulle de gerne vise sig?

Skal prøve at lave et eksempel hvor jeg har en rutine der skriver ud på et blankt Printer-canvas. Det er lidt noget pillearbejde, men egentlig ikke så svært som at gennemskue Rave - synes jeg.
Avatar billede kennethv Nybegynder
15. august 2006 - 18:26 #30
Næ, jeg løber ingen tekst igennem. Jeg har prøvet lidt forskelligt bla. prøvet en af de eksempler du har sendt til mig, hvor jeg godt nok for teksten ud, men ikke som formateret. Lige nu er den:

MemoBuf.RichEdit := TRichEdit(DBRichEdit1);

Jeg har sendt dig koden så du kan se hvad der sker.
Avatar billede kennethv Nybegynder
20. august 2006 - 11:08 #31
HRC har du set at jeg har sendt noget til dig?
venligst
Kenneth
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