Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: gianpa - Novembre 29, 2013, 06:10:27 pm

Titolo: convertire da delphi
Inserito da: gianpa - Novembre 29, 2013, 06:10:27 pm
Ho provato a convertire un piccolo programma che avevo fatto in delphi ma trovo degli errori su PrintDialog e PrinterSetupDialog;
cosa devo usare per dialogare con la stampante, in Lazarus ???

ciao
e grazie
Titolo: Re:convertire da delphi
Inserito da: nomorelogic - Novembre 30, 2013, 10:27:10 am
ciao, che tipo di errori ottieni?

intanto prova a dare un'occhiata:

Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 02, 2013, 08:22:22 pm
l'errore è identifier not found"TprindDialog"
Ho provato a dare un'occhiata  , ma mi par di capire che non esiste questo Tobject in Lazarus !

ciao
Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 02, 2013, 08:29:33 pm
Mi correggo : c'è !
Quindi vuol dire che nella uses ho dimenticato la giusta UNIT per poterla usare!

Devo scoprirne il Nome !!!

Ciao
Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 02, 2013, 08:53:53 pm
Ho inserito la clausola printersdlg nelle USES ed ora l'errore è sparito !
L'unico problema è che cliccando su esegui il programma non si avvia !?!
Sembra che si compili e resti in attesa ,mentre nell'equivalente Delphi si autocreava la MainForm ed era necessario poi Terminare il Programma per tornare all'IDE !

Boh ???

Ciao
Titolo: Re:convertire da delphi
Inserito da: Stilgar - Dicembre 02, 2013, 10:38:59 pm
Gianpa, prova a fare un nuovo progetto Lazarus.
Carichi un TPrintDialog e vedi se si comporta in modo assurdo anche in quel caso...


Stilgar
Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 03, 2013, 01:49:21 pm
Ci stavo pensando ,ma ho rinunciato visto che ora 'errore è sparito!  ho controllato ,ma come per delphi la mia mainform è autocreata e dovrebbe visualizzarsi l'applicazione ,se il compilatore non torna errori ,o no?

ciao
Titolo: Re:convertire da delphi
Inserito da: Stilgar - Dicembre 03, 2013, 04:31:07 pm
Oddio, il comportamento dovrebbe essere lo stesso.
In entrambi i framework hai una prima form che viene associata all'applicatione che diventa la main....
Controlla sul file di progetto. Le istruzioni da cercare sono del tipo:
Codice: [Seleziona]
Application.createForm(class,instance);
;)
Stilgar
Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 04, 2013, 06:11:02 pm
e infatti l'applicazione non parte per l'errore:Usched1.pas(1,1) Fatal: Unit printersdlg searched but Printers found
che non capisco bene cosa vuol dire, che non si visualizzava perchè la finestra messaggi restava chiusa!

Ciao
Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 04, 2013, 06:29:40 pm
mi rispondo da solo:ho sostituito PrintersDlgs nelle uses al posto di printersdialog ed ora procede con la compilazione... si ferma a Usched1.pas(394,24) Error: identifier idents no member "Handle"
in questa routine :

procedure TschedaMain.bitstampaClick(Sender: TObject);
var
i,lineheight,linesperpage,linecount:integer;
r:trect;
s:string;

begin
if printdialog1.execute then begin
   printer.canvas.font:=memo1.font;
 lineheight:=abs(muldiv(printer.canvas.font.size,
 getdeviceCaps(printer.Handle,logpixelsy),72));
    inc(lineheight,(lineheight*4) div 10);
    linesperpage:=(printer.pageheight div lineheight) - 4;
linecount:=4;
printer.begindoc;
r.top:=lineheight;
r.left:=20;
r.right:=printer.pagewidth;
r.bottom:=lineheight*2;
    drawtext(printer.handle,pchar(opendialog1.filename),-1,r,dt_center);

    For i:=0 to pred(memo1.lines.count) do begin
        inc(linecount);
      if linecount=linesperpage then begin
      linecount:=4;
      printer.newpage;
    end;
s:='       '+memo1.lines.strings+'        '
+'      '+memo2.lines.strings;
printer.canvas.textout(0,linecount*lineheight,s);
end;
printer.enddoc
end;
                          praticamente alla riga getdevicecap

ciao
Titolo: Re:convertire da delphi
Inserito da: nomorelogic - Dicembre 04, 2013, 07:37:57 pm
leggi questa risposta sul 3D del forum ufficiale

http://forum.lazarus.freepascal.org/index.php/topic,852.msg3971.html?PHPSESSID=0b8bdee3280482d2ae3cbb8090cec778#msg3971 (http://forum.lazarus.freepascal.org/index.php/topic,852.msg3971.html?PHPSESSID=0b8bdee3280482d2ae3cbb8090cec778#msg3971)
Titolo: Re:convertire da delphi
Inserito da: gianpa - Dicembre 05, 2013, 09:20:32 pm
ho provato a seguire il link che mi hai dato e ci ho studiato un po' ,ma mi sono perso!
Sarà mica così complicato utilizzare la stampante ??? mah


ciao e grazie comunque!
Titolo: Re:convertire da delphi
Inserito da: Stilgar - Dicembre 06, 2013, 10:17:27 am
Devi usare la api portabili, non quelle legate a windows ;)