Alphabet in QuickReport drucken.....Problem!
-
Hallo!
Ich habe nun versucht die Schleife zu ergänzen, leider ist das Ergebnis immer, dass dann 4 x derselbe Buchstabe pro Reihe vorkommt.
Ich möchte ja aber 4 Buchstaben des Alphabets pro Zeile, also in Zeile 1
A,B,C,D in Zeile 2 E,F,G,H usw.Kann mir da jemand weiterhelfen? ich komm sonst hier nicht weiter.
Gruß
Maik
-
Du musst hier ansetzen:
if (MoreData) { QRLabel1->Caption = myString[Row]; Row++; }Anstatt nur einen Buchstaben auszugeben, musst du halt gleich vier ausgeben und Row um vier erhöhen.
P.S. Wenn du Beispielcode posten würdest, könnte man dir bestimmt besser helfen.
-
Ich hatte es so versucht:
void __fastcall Tf_alphabetaufkleber_drucken::QuickRep1NeedData( TObject *Sender, bool &MoreData) { static int Row = 1; AnsiString myString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; if (Row <= 26) MoreData = true; else MoreData = false; if (MoreData) { QRLabel1->Caption = myString[Row]; Row++; QRLabel2->Caption = myString[Row]; Row++; QRLabel3->Caption = myString[Row]; Row++; QRLabel4->Caption = myString[Row]; Row++; } else Row = 1;Leider bricht er sofort mit einem Fehler ab.
Auch andere Versuche sind gescheitert, weil er immer nur 2 Buchstaben geschrieben hat und dann in die nächste Zeile gesprungen ist.
Für eine kurze Antwort wär ich dankbar
Gruß
Maik

-
Die Fehlermeldung wäre jetzt auch hilfreich zu wissen.
Ein Fehler in dem Beispielcode ist, das die Arraygrenze überschritten wird, d.h. du greifst auf myString[27] zu.
-
Die Fehlermeldung lautet:
ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead ??
Wie kann ich das überschreiten verhindern?
Gruß
Maik
-
Z. B. so:
if (Row <= 26) QRLabel2->Caption = myString[Row];oder so:
AnsiString myString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ";...
-
Jetzt sind wir wieder am Anfang:
if (Row <= 26) QRLabel2->Caption = myString[Row];Dieser Code kommt bei mir bereits vor!
Noch mal, was ich möchte:
Pro Zeile 4 Buchstaben des Alphabets, solang bis das Alphabet durch ist!
Schöne Grüße
Maik
-
solange du 26 Buchstaben durch 4 teilen willst gibt das immer eine Überschreitung,
also versuch einfach mal Finkis Tipp und mach an myString noch 2 Leerzeichen dranund denk dran: du willst was von uns, nicht wir von dir

-
Ich hatte den Beitrag von Finki nicht richtig gelesen,
aber so funktionierts.
Vielen Dank.
Wollte nicht unhöflich sein.
Gruß
Maik
-
void __fastcall TForm1::QuickRep1NeedData(TObject *Sender, bool &MoreData) { static int al = 0; TQRLabel *label[4]={QRLabel1,QRLabel2,QRLabel3,QRLabel4}; int i; for(i=0;i<4;i++) { if(al+i<26) label[i]->Caption=char(65+al+i); else label[i]->Caption =EmptyStr; } al+=i; if(al<26) MoreData=true; else MoreData=true; }