Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi 7 - Tlač celého formulára

Vie mi niekto vysvetliť túto "anomáliu"? Mám program, ktorý vytlačí výstup programu na tlačiarni z existujúceho formulára, ktorý je reálne vytvorený, ale nezobrazený. Formulár má nastavené rozmery tak, aby bol celý vykreslený. Pozor, celý formulár sa na obrazovku nezmestí. Program vzniká pri tlači. Bolo to odskúšané na dvoch počítačoch, mojom a na ktorom sa ten program používa. Mne sa formulár vytlačí celý a na druhom počítači sa vytlačí len tá časť, ktorá by bola zobrazená na obrazovke, ak by sa nastavila vlastnosť TForm.Visible := True. Vie mi niekto vzsvetli5, v čom je problém? Môj počítač má WinXP SP2 a dotyčný počítač vraj WinXP SP1. Používa sa ten istý program so štandardným nastavením tlače (nastavovací dialóg program neotvorí). V prípade ďalších otázok zodpoviem všetko, čo budem vedieť, ale nič podstatné, čo by som mal uviesť ma nenapadá. Program je napísaný v Delphi 7. Na mojom počítači je inštalácia D7, na dotyčnom počítači sa program inštaluje zo súboru vytvoreného pomocou Install Shield v D7, pretože program potrebuje na svoju prácu BDE.

Předmět Autor Datum
Takove veci se resi pres reportovaci nastroje, neresi se to tiskem formulare.
Jan Fiala 18.08.2006 13:34
Jan Fiala
Mne to bolo tak jednoduchšie. Nie je problém to prerobiť, ale je tam aj grafika, takže mi vyhovovalo…
msx. 18.08.2006 17:01
msx.
IMHO tato metoda je taková nouzovka ze zoufalství. Párkrát jsem to použil, ale výsledek je přežalost… poslední
Rce 19.08.2006 00:07
Rce

Mne to bolo tak jednoduchšie. Nie je problém to prerobiť, ale je tam aj grafika, takže mi vyhovovalo WYSIWYG. S reportami nemám veľké skúsenosti. V každom prípade by ma ale zaujímalo, prečo sa to na každom počítači správa inak. Veď potom nemá zmysel metóda TForm.Print.:-|

IMHO tato metoda je taková nouzovka ze zoufalství. Párkrát jsem to použil, ale výsledek je přežalostný. Používá to funkci TForm.GetFormImage, která vrací xicht formu jako bitmapu. To by ještě tak strašné nebylo. Leč pokračuje to přepočítáním velikosti podle obrovské spousty nastavení tiskárny. Záleží na velikosti papíru, okrajů, počtu logických pixelů atd atd. Tím už ve většině případů vypukne už tak velká deformace, že texty se ztrácejí v rozsypaném čaji či mlze. Korunu tomu dá API funkce StretchDIBits, kterou se to přes Windouzy tiskne. Zkus použít TForm.GetFormImage a bitmapu vytisknout na svoje triko, uvidíš nejlépe, při jaké změně měřítka to bude k ničemu (pro tisk použij TCanvas.StretchDraw). Lépe je však vyrobit plnohodnotný report :-p:-).

Zpět do poradny Odpovědět na původní otázku Nahoru