wydruk Program do faktur

0

Witam
To jest mój pierwszy post. A zarazem dopiero początki przygody z Delphi (pare tygodni)
Pisze sobie programik do wystawiania faktur i przy okazji sie uczę.
i utknąłem w momencie wydruku faktury.
Jak coś takiego rozwiązać próbowałem Rave Report i Fast Report ale bardzo mi się nie podoba tes sposób teraz kombinuje by tworzyć nowa formę i ja drukować ale jakość wydruku jest nie taka jak bym chciał.

proszę pomóżcie.

Pozdrawiam

0

Co Ci się nie podoba. Fast Report jest prosty łatwy i przyjemny i ma bardzo duże możliwości. Chcąc drukować formę daleko nie zajedziesz. Na stronie Fast Reporta są demka we flash'u jak robić proste wydruki.

BTW kiedyś też zaczynałem się bawić Delphi i żałuję że nie było kogoś kto by mi wtedy powiedział: "Nie ucz się tego, to bez przyszłości, weź się lepiej za C++"

PS. A ten program korzysta z jakieś bazy ?

0

Tak korzysta, paradox.
No a jak na przykład załadować zawartość StringGrid do FastReport??

I gdzie można znaleźć te demka we flashu??

0

http://www.fast-report.com/pl/products/fr4-flash-demo_pl.html

Jeśli koniecznie chcesz StringGrid'a, to możesz użyć frUserDataSet czy jak się to tam nazywa. Jakkolwiek bardziej cywilizowaną metodą jest wyświetlanie (poza nielicznymi wyjątkami) danych prosto z bazy na raporcie.

0

Aha, do FR jest super dokumentacja. To znaczy super jak dla początkujących, nie wiem czy jest z wersją którą posiadasz. Jest w języku angielskim, ale pisana bardzo prosto i obrazowo. Myślę że jest świetnym uzupełnieniem do tych demek - tak na początek.

0

No ale chyba wyświetlenie prosto z bazy informacji typu termin płatności i innych RZeczy które ustawiam sobie w formie przed drukowaniem nie jest zabardzo mozeliwe

0

Wszystko jest możliwe. Google + manual + szczere chęci.

0

No właśnie google sa strasznie ubogie w art o raportach, a z ang u mnie słabo.
Dużo pracy wsadziłem w ten programik do faktur i chciał bym go skończyć.

0

No to życzę powodzenia... jak będziesz miał konkretny problem to go opisz, to może pomogę.

0

No właśnie nie wiem jak przekazać StringGrida do raportu. Labela i Edita mi się udało... ale Sgrid nie moeg sobie poradzic

0
b0bik napisał(a)

No to życzę powodzenia... jak będziesz miał konkretny problem to go opisz, to może pomogę.

udało mi się czytać StringGrida do raportu,

procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
var  Cross: TfrxCrossView; 
 i, j: Integer;
begin  if c is TfrxCrossView then 
 begin   
 Cross := TfrxCrossView©;
    for i := 1 to 16 do    
  for j := 1 to 16 do     
 begin       
   Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);    
  end;  
end;

tylko mam taki problem: jeżeli jest jakaś komórka pusta lub ma tekst w SGrid to wyskakuje błąd "Could not convert variant of type String in type Doble"
w którym miejscu przekaszatłcić te wartosci??

0

Nie mam odpalonego Delphika, ale tak na szybko:

Widzę że użyłeś CrossView, nie wiem czy celowo czy nie, ale chyba nie do końca tego potrzebowałeś. Co do samego sposobu przerzucenia danych ... też nie do końca tak to powinno być, jak będe na siłach to zerknę zaraz czy mam gdzieś FR, to może coś popowiem.

Co do komunikatu to obstawiał bym Cross.AddValue. Uzywasz tam nawiasów kwadratowych, nie wiem szczerze powiedziawszy czego oczekuje tamta metoda (pewnie array of Variant). W każdym razie problem jest chyba dość oczywisty. Ostatni parametr podajesz jako zawartość komórki StringGrid'a - więc FR próbuje ją zamienić na typ Double, i jeśli jest ona pusta, albo jest tam jakiś tekst to jest error.

Generalnie możesz przed wywołanim AddValue, pobrać zawartość komórki i zamienić ją na Double, ale mam wrażenie że użycie tego komponentu nie jest tu kompletnie na miejscu. Postaram się zaraz coś Ci podrzucić.

0

Jednak lipa. Nie mam żadnego Delphika z działającym FastReportem. Ale ... mogę trochę poteoretyzować, a ktoś inny może coś podpowie.

Jest taki komponent jak frxUserDataset. Z tego co pamiętam z dokumentacji, on umożliwia definiowanie źródeł danych nie związanych z bazami danych. Jeśli już chcesz ciągnąć dane ze StringGrida (choć podejrzewam że wolałbyś z DBGrid'a ;]) to teoretycznie ten komponent mógł by się do tego nadać.

Podkreślam nigdy go nie stosowałem, więc mogę się mylić, ale IMHO powinno wyglądać to tak.

Dla ułatwienia, zadeklaruj sobie globalną zmienną CurrentRow : Integer - będzie ona oznaczała bieżący wiersz. We właściwości Fields frxUD wpisz kilka wierszy:

kol1
kol2
kol3

Zdarzenia:

OnCheckEof:

Eof := CurrentRow = StringGrid1.RowCount {może by trzeba było zrobić StringGrid1.RowCount-1};

OnFirst:

CurrentRow := 1;

OnGetValue:

If VarName = 'kol1' then
Value := StringGrid1.Cells[1, CurrentRow] else
If VarName = 'kol2' then
Value := StringGrid1.Cells[2, CurrentRow] else ...

OnNext

Inc(CurrentRow);

OnPrior

Dec(CurrentRow);

Nie wiem do czego jest OnNewGetValue, no ale zobaczymy czy w ogóle pomysł się sprawdzi. Teraz w edytorze raportu, włączasz sobie aby był dostępny nasz dataset (Report -> Data) i zahaczasz. Po prawej stronie powinien się on pojawić, z możliwością rozwinięcia kolumn. Wstawiasz sobie do raportu MasterDataBand'a i podpinasz go pod naszego frxUD. Z drzewka po prawej możesz przeciągnąć kolumny na tego band'a. Jeśli cały plan jest OK, to po uruchomieniu progs'a powinno działać. Zrób sobie Save zanim dasz F9.

Mam nadzieje ze dotarła do Ciebie idea tego co chciałem Ci przekazać, oraz że nie opowiadam bredni : ) Może ktoś to potwierdzi.

Pozdrawiam

0

Działa jedyny mankament to ze wrzuca mi wiersze na osobne strony a ostatnia jest pusta, spróbuje do tego sam dojść;>

Dziękuje bardzo za pomoc.

ps.
a są jakieś dostępne publikacje o raportach??

0

A wstawiłeś tego masterband'a ?

Co do publikacji, to bardzo dobrze wyjaśnione są podstawowe zagadnienia w user manualu. To jest taki ~3Mb pdf, nie wiem czy go widziałeś. Jest po angielsku. Flash'e na stronie. Więcej nie znam, też jakoś specjalnie nie szukałem. Generalnie IMHO jest bardzo bardzo intuicyjny - trzeba tylko czaić ogólne zasady raportowania.

Aha przypomniało mi się, nie wiem jaką masz wersję tego fast reporta, ale coś mi się kojarzy że w robocie Designer'a mam po Polsku - może to by Ci coś pomogło. Tylko nie pamiętam jak się to robi, czy w opcjach, czy trzeba coś ściągnąć ...

0

Wstawiłem masterbanda i nie poradziłem sobie:>

Manual gdzies mi przed oczmi przemknoł widziałem go i zajże do niego na pewno

Desingera mam po polsku

0

A podpiołeś tego banda do tego dataset'a ? (dwuklik na bandzie)

0

Już dział DS RangeEnd miałem na reCurrent

Jeszcze raz wielkie dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1