domingo, 13 de dezembro de 2009

Bug in the QT or problem of configuration?

When using Lazarus in linux, I have used widget Qt, for two reasons:

1.For the appearance of the programs
2.For the available documentation and easiness to implement routines of the Qt directly

But as everything they are not flowers, always a problem appears.

In this in case that, I do not know if bug of the Qt is one, or if it is problem of configuration in linux.

Go to the problem.


In the internet speed of 500kbps, the programs with widget Qt load normally, but in the speed of 2kbps, delays an eternity to load, as if in some way the Internet it was intervening the shipment of the program.

Somebody already passed therefore?

Is one bug in Qt library or problem of configuration in linux?

Any help will be coming well.

Thanks.

Facilitating input of date

In any document, generally we have that to inform dates, in way that if becomes necessary to speed the input of keyboard. Then, i created two routines, that already use have 6 years. If you are experienced, is something easy, but for the beginning ones, this tip can be interesting.

How it functions the routines?

They are two routines:
Validakeydatas and Validakeydatas2.
Using keyboard key RETURN functions validating the date when.
In mine in case that it has been very useful, therefore these routines beyond validating the dates have other advantages: .

.It speeds in the digitação, therefore when typing the date does not need to place the separator, in the case the bar ' /' , and additionally, it does not need to inform the year of the date, that the complete routine automatically
.It can be used in any component, as Edit, DBEdit, DBGrid.


These routines intercept the keyboard input of the user, returning to caracter null in the case to type something invalid date.

The difference of Validakeydatas and Validakeydatas2 is that in the second function the year for automatic fulfilling can be informed.

For example, the date '01/12/2009' you type only ' 01122009' or ' 0112' and uses a keyboard RETURN.

How to use the routines?

It is enough to configure the OnKeyPress event of the component, the following form:
Form creates one
It inserts two TEdit components in form
Of a double click in the OnKeyPress event of the Edit1

Example 1
Validakeydatas



procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
//Validakeydatas flame, not accepted blank date
Validakeydatas(Sender,Key,False);
if key=#13 then Edit2.setfocus;
if key=#27 then close;

end;

Example 2
Validakeydatas


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
//alidakeydatas flame, but accepted blank date
Validakeydatas(Sender,Key,True);
if key=#13 then Edit2.setfocus;
if key=#27 then close;

end;


Example 3
Using Validakeydatas2


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
//Call Validakeydatas
//don't accept blank date
//if not to inform the year, fills with ' 2009'
Validakeydatas2(Sender,Key,False,'2009');
if key=#13 then Edit2.setfocus;
if key=#27 then close;

end;


Source code

It follows below an example of Unit that could be used to store the functions:


unit funcoes1;

interface

uses

LCLIntf, Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
EditBtn, ExtCtrls, StdCtrls;

Function IsDate(wData:String):Boolean;
Procedure ValidaKeyDatas(Const Sender:TObject; var key: char; Const AceitaNulo: Boolean);
Procedure ValidaKeyDatas2(Const Sender:TObject; var key: char; Const AceitaNulo: Boolean;Const zAno:String);

implementation

Function IsDate(wData:String):Boolean;
var
T:TDateTime;
Begin
Try
T:=StrToDateTime(wData);
Result:=True;
except
Result:=False;
end;
end;


Procedure ValidaKeyDatas(Const Sender:TObject; var key: char; Const AceitaNulo: Boolean);
var
D1:String;
L:integer;
begin
if not (key in ['0'..'9','/',#8,#13,#27]) Then key:=#0;
if Sender.ClassName='TEdit' Then
begin
D1:=TEdit(Sender).Text;
if (key=#13) and (D1='') then
if not (AceitaNulo) Then key:=#0;

if (key=#13) and (D1<>'') then
begin
L:=length(D1);
if (pos('/',TEdit(Sender).Text)=0) and ((L=6) or (L=8)) then
begin
if L=6 then
//original version brazilian
//D1:=copy(D1,1,2)+'/'+copy(D1,3,2)+'/'+copy(D1,5,2)
//English version
D1:=copy(D1,3,2)+'/'+copy(D1,1,2)+'/'+copy(D1,5,2)
else
//original version brazilian
//D1:=copy(D1,1,2)+'/'+copy(D1,3,2)+'/'+copy(D1,5,4);
//English version
D1:=copy(D1,3,2)+'/'+copy(D1,1,2)+'/'+copy(D1,5,4);
end;
if isdate(D1) Then TEdit(Sender).Text:=D1;
if not isdate(D1) Then
begin
key:=#0;
//original version brazilian
//ShowMessage('Data Invalida');
//English version
ShowMessage('Invalid Date');
TEdit(Sender).SetFocus;
end;
end;
end;

end;

{
AceitaNulo: Accept Blank Date
zAno: Year to substitute
}

Procedure ValidaKeyDatas2(Const Sender:TObject; var key: char; Const AceitaNulo: Boolean;Const zAno:String);
var
D1:String;
L:integer;
begin
if not (key in ['0'..'9','/',#8,#13,#27]) Then key:=#0;
if Sender.ClassName='TEdit' Then
begin
D1:=TEdit(Sender).Text;
if (key=#13) and (D1='') then
if not (AceitaNulo) Then key:=#0;

if (key=#13) and (D1<>'') then
begin
L:=length(D1);
if (pos('/',TEdit(Sender).Text)=0) and ((L=6) or (L=8)) then
begin
if L=6 then
//brazilian version
//D1:=copy(D1,1,2)+'/'+copy(D1,3,2)+'/'+copy(D1,5,2)
D1:=copy(D1,3,2)+'/'+copy(D1,1,2)+'/'+copy(D1,5,2)
else
//brazilian version
//D1:=copy(D1,1,2)+'/'+copy(D1,3,2)+'/'+copy(D1,5,4);
D1:=copy(D1,3,2)+'/'+copy(D1,1,2)+'/'+copy(D1,5,4);
end;

if (pos('/',TEdit(Sender).Text)=0) and (L=4) then
begin
D1:=D1+zAno;
L:=length(D1);
if L=6 then
//D1:=copy(D1,1,2)+'/'+copy(D1,3,2)+'/'+copy(D1,5,2)
D1:=copy(D1,3,2)+'/'+copy(D1,1,2)+'/'+copy(D1,5,2)
else
//D1:=copy(D1,1,2)+'/'+copy(D1,3,2)+'/'+copy(D1,5,4);
D1:=copy(D1,3,2)+'/'+copy(D1,1,2)+'/'+copy(D1,5,4);
end;
if isdate(D1) Then TEdit(Sender).Text:=D1;
if not isdate(D1) Then
begin
key:=#0;
//ShowMessage('Data Invalida');
ShowMessage('Invalid Date');
TEdit(Sender).SetFocus;
end;
end;
end;
end;


end.


Until the next one.

quarta-feira, 26 de agosto de 2009

The component LazGradient

With this component the programs written in lazarus are with an appearance well attractive, but well-taken care of to not to exaggerate.

Examples:





Main properties:

BeginColor:TColor
EndColor:TColor
Orientation => foLeftToRight, fdTopToBottom
Rounded => Boolean

In the current version this component to the being added in form, automatically occupies all the screen.

To correct, it makes the alterations to follow.
Open the package Lazgradient.lpk
Open unit Gradient.pas and locates the code below:

constructor TLazGradient.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
BeginColor:= clBlue;
EndColor:= clWhite;
Orientation:= foLeftToRight;
Align:= alClient;
Alignment := taCenter;
Rounded:= False;
end;

Change

Align:= alClient;

to

Align:= alNone;

It adds the lines below:

Height:=35;
Width:=120;

Result below:

constructor TLazGradient.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
BeginColor:= clBlue;
EndColor:= clWhite;
Orientation:= foLeftToRight;
Align:= alNone;
Alignment := taCenter;
Rounded:= False;
Height:=35;
Width:=120;
end;

It develops its system of commercial automation.
Try the LazGradient!

Link to download component:

http://wile64.perso.neuf.fr/download/lazarus/lazgradient.zip

Until the next one.

segunda-feira, 17 de agosto de 2009

Running lazarus under wine

Running lazarus under wine

For that they develop for linux and windows and the use of one virtual machine is not an alternative practises, and it has time to try wine, then this tip can be interesting.

Really run an application in wine can not be the option most trustworthy, but in many cases decided the problem to have that to work simultaneously with two OS, what implies the use of virtual machines, that they consume much processing of cpu, but each one has an opinion and depends on each case.

Make lazarus run on wine

Many times when I installed lazarus in wine, he was not possible to work, therefore he did not obtain to open the projects.
Example:

project g:\diversos\laztestewin32\linux\rlreportteste.lpi

When trying to open, lazarus returns that the project does not exist:



E thus occurs pra any archive that to try to open.
The first solution that came me the mind was to create one link symbolic pointing pra required folder, thus:
Considering:
G: =/home/teste
cd /home/teste/diversos/laztestewin32/
ln - s linux/linu

… and ready, it decided.
The problem is that when opening the same archive, lazarus suppressed finishes it letter another time, and thus successively, and had that to create new link.
I decided for the hand in the mass and to study the code.

Then I created following the functions:

Please, sees the unit mainwine.pas below listed

I observed that the problem happens whenever the class TOpenDialog and TSaveDialog is used.
Unit that this the code to save the projects, packages, etc is main.pp.
Then, is alone to include this unit (mainwine) in the uses clause of unit main.pp and to call these functions before opening and saving its archives in IDE.

It creates a directive USEWINE:
{$DEFINE USEWINE}

Now it implements in the cases below:


procedure TMainIDE.mnuOpenClicked(Sender: TObject);

...
For I := 0 to OpenDialog.Files.Count-1 do
Begin
AFilename:=CleanAndExpandFilename(OpenDialog.Files.Strings[i]);
{$IFDEF USEWINE}
AFilename:=mainwine.WineValidFile(AFilename);
{$ENDIF}
...

function TMainIDE.DoShowSaveFileAsDialog(AnUnitInfo: TUnitInfo;
var ResourceCode: TCodeBuffer): TModalResult;
...
NewFilename:=ExpandFileNameUTF8(SaveDialog.Filename);
{$IFDEF USEWINE}
NewFilename:=WineValidSaveFile(NewFilename);
{$ENDIF}
...

if ExtractFileExt(NewFilename)='' then begin
NewFilename:=NewFilename+SaveAsFileExt;
{$IFDEF USEWINE}
NewFilename:=WineValidSaveFile(NewFilename);
{$ENDIF}
end;
...
{$IFDEF USEWINE}
NewFilename:=WineValidSaveFile(NewFilename);
{$ENDIF}
NewFilePath:=ExtractFilePath(NewFilename);
...

function TMainIDE.DoShowSaveProjectAsDialog: TModalResult;

...
NewFilename:=ExpandFileNameUTF8(SaveDialog.Filename);
{$IFDEF USEWINE}
NewFilename:=WineValidSaveFile(NewFilename);
{$ENDIF}
if not FilenameIsAbsolute(NewFilename) then
RaiseException('TMainIDE.DoShowSaveProjectAsDialog: buggy ExpandFileNameUTF8');
NewProgramName:=ExtractFileNameOnly(NewFilename);
...

I did not test all the cases, therefore for me of this skill he decided great part of the problem, and the code of IDE is very complex, and extensive.
But a solution for the problem, and those developers is registered that collaborate with the project and have more affinity with the code of unit main.pp and others units that they make the IDE, can appreciate and it will be the case, to implement definitively, and thus to offer to end user a new alternative.

Until the next one.

unit mainwine;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils;

function WineValidFile(filename1:string):string;
function WineValidSaveFile(filename1:string):string;

implementation

function WineValidFile(filename1:string):string;
var
wineFile,wineFile2,winePath,winePath2:string;
wineListChar:TStringlist;
pathLen,charCount:integer;
begin
wineListChar:=TStringlist.Create;
Result:=filename1;
if not SysUtils.FileExists(filename1) then
begin
WinePath:=SysUtils.ExtractFilePath(filename1);
PathLen:=length(WinePath);
WinePath:=copy(WinePath,1,PathLen-1);
wineFile:=SysUtils.ExtractFileName(filename1);
for charCount:=32 to 127 do begin
wineFile2:=WinePath+chr(charCount)+'\'+wineFile;
if fileexists(wineFile2) then begin
Result:=wineFile2;
break;
end;
end;
end;

end;

function WineValidSaveFile(filename1:string):string;
var
wineFile,wineFile2,winePath,winePath2:string;
wineListChar:TStringlist;
pathLen,charCount:integer;
begin
wineListChar:=TStringlist.Create;
Result:=filename1;
if not SysUtils.FileExists(filename1) then
begin
WinePath:=SysUtils.ExtractFilePath(filename1);
PathLen:=length(WinePath);
WinePath:=copy(WinePath,1,PathLen-1);
wineFile:=SysUtils.ExtractFileName(filename1);
for charCount:=32 to 127 do begin
wineFile2:=WinePath+chr(charCount)+'\'+wineFile;
if DirectoryExists(WinePath+chr(charCount)+'\') then
begin

Result:=wineFile2;
break;
end;
end;
end;

end;

end.

sábado, 15 de agosto de 2009

Configuring screen font multiplatform

Configuring screen font multiplatform

Who develops applications multiplatforms, many times has the problem of appearance generated for the screen font, that always finishes annoying. I decided this problem manually defining the font that would be used in linux, and another font in windows, thus:
{$IFDEF LINUX}
self.font.name: =' Helvetica' ;
{$ENDIF}
Thus, in linux ' used font; Helvetica' e in windows font ' Ms Sans Serif'. Of course he was not perfect, therefore the sizes are different.
This when I used kylix3.
But now, with lazarus and widget QT, I obtained the solution this problem of satisfactory form. Of them you vary fonts that I tested, I discovered that font Verdana has accurately the same resulted visual, as much in windows as in linux, to worry thus not necessary me in being change labels width, to fit the text in both the operational systems.
Therefore, before drawing any visual component in form, I changed font to Verdana. He is not font prettier, but it did not give to continue of the skill that was, therefore to configure one font for windows and another one for linux is complicated.

Also standard of applications QT in the QTConfig is possible to configure font, but I do not advise to make this.
This procedure was tested only in linux (not use widget QT in windows)
If somebody already decided this problem in another way, accepted you criticize and suggestions. In next post, I will show as I decided the problem to inside execute lazarus under wine, correcting that one bug of the directory, that it hinders to open the projects under wine.
Until the next one.

terça-feira, 4 de agosto de 2009

Lazarus - para desenvolvedores Delphi

Lazarus é uma ferramenta de desenvolvimento rápido de aplicações (RAD) semelhante ao Delphi da Embarcadero.
Assim como o Delphi, contém uma biblioteca de componentes visuais e uma IDE. A biblioteca de componentes do Lazarus (LCL) é muito parecida com a do Delphi que é a VCL. Muitas unidades, classes e propriedades tem o mesmo nome e funcionalidade. Assim, converter programas do Delphi pro lazarus é relativamente fácil.

Mas não espere 100% de compatibilidade com o Delphi. O Lazarus não é um clone do Delphi', apenas compativel.

Apresentando o Lazarus

Tela principal:



O Editor de codigo:



Paleta de Componentes

Standart:



Componentes: TMainMenu,TPopUpMenu,TButton,TLabel,TEdit,TMemo,TTogglebox,TCheckBox,TRadioButton,TListBox,TComboBox,TScrollBar,TGroupBox,TRadioGroup,TCheckGroup,TPanel,TFrame,TActionList

Additional



Componentes:
TBitBtn,TSpeedButton,TStaticText,TImage,TShape,TBevel,TPaintBox,TNotebook,TLabeledEdit,TSplitter,TTrayicon,TMaskEdit,TCheckListBox,TScrollBox,TApplicationProperties,TStringGrid,TDrawGrid,TPairSplitter,TColoBox,TColorListBox,TChart

Paleta Common Controls:



Componentes:
TTrackBar,TProgressBar,TTreeview,TListView,TStatusBar,TToolBar,TUpDown,TPageControl,TTabControl,THeaderConrol,TImagelist,TPopupNotifier

Paleta Dialogs:



Componentes:
TOpenDialog,TSaveDialog,TSelectDirectoryDialog,TColorDialog,TFontDialog,TFindDialog,TReplaceDialog,TOpenPictureDialog,TSavePictureDialog,TCalendarDialog,TCalculatorDialog,TPrintSetup,TPrintDialog,TPageSetupDialog

Paleta Misc:



Componentes:
TColorButton,TSpinEdit,TFloatSpinEdit,TArrow,TCalendar,TEditButton,TFileNameEdit,TDirectoryEdit,TDateEdit,TCalcEdit,TFileListBox,TFilterComboBox,TXMLPropStorage,TIniPropStorage,TBarChart,TButtonPanel,TShellTreeView,TShellListView,TIDEDialogLayoutStorage

segunda-feira, 3 de agosto de 2009

Fortes Report for Lazarus on sourceforge.net

Fortes Report for Lazarus on sourceforge.net

The project FortesReport4Lazarus is now avaliable in sourceforge.net at the address

http://fortes4lazarus.sourceforge.net/

FortesReport4Lazarus need contributors.
Join to the project and help to make the FortesReport4Lazarus the best report generator to lazarus freepascal.

regards

quarta-feira, 29 de julho de 2009

Using lazarus with QT widget

Screenshot:




Using lazarus with QT widget

This tip tested in Lazarus 0.9.26-2

After many attempts, I discovered with making to perfectly function (or almost) lazarus with the wonderful Qt library (version 4.5.1)
To who does not know, the QT was under license LGPL, becoming thus one of the best options of work in linux, or best.

This procedure was carried through in the ARCHLINUX

Download the archive bin-qt4pas-V1.70_Qt4.5.0.tar.gz or bin64-qt4pas-V1.70_Qt4.5.0.tar.gz .like your architecture of your pc.

to unpack:
tar - zxvf bin-qt4pas-V1.70_Qt4.5.0.tar.gz
two archives will be unpacked:
libqt4intf.so
qt4.pas

After to unpack, the archive libqt4intf.so must be copied in the following folders:
/usr/lib
/usr/lib/lazarus/lcl/interfaces/qt

Copied these archives, it enters in the /usr/lib/lazarus/lcl/interfaces/qt folder

#cd /usr/lib/lazarus/lcl/interfaces/qt

Two tasks to make in this folder:
to.rename the existing archive qt4.pas already
mv qt4.pas qt4.pas.old

to change the archive qtdefines.inc
to add the line:
{$define USE_QT_44}

After that it enters in the
/usr/lib/lazarus/lcl/units/i386/ folder and it creates a folder qt
#cd /usr/lib/lazarus/lcl/units/i386/
#mkdir qt
#chmod 0777 qt
In my case, it was not possible to compile IDE, always gave not joined error of unit
Modifying the /etc/fpc.cfg archive, it includes the following line in the section
# searchpath will be units and to other system dependent things
- Fu/usr/lib/lazarus/ideintf/

The LCL Qt has one bug in linux, does not appear the close button of form, of any form even though of IDE, what it brings a great developer discomfort.
In my case that, I decided this problem of the following mode:
.locate unit Qtwsforms.pp
.Open unit and it locates: TQtWSCustomForm.CreateHandle
Near the line 153, must appear the following code:

if not (csDesigning in TCustomForm(AWinControl).ComponentState) then
begin
UpdateWindowFlags(QtMainWindow, TCustomForm(AWinControl).BorderStyle,
TCustomForm(AWinControl).BorderIcons, TCustomForm(AWinControl).FormStyle);
end;

change to:

{$IFDEF LINUX}
UpdateWindowFlags(QtMainWindow, TCustomForm(AWinControl).BorderStyle,
[biSystemMenu,biHelp], TCustomForm(AWinControl).FormStyle);
{$ELSE}
UpdateWindowFlags(QtMainWindow, TCustomForm(AWinControl).BorderStyle,
TCustomForm(AWinControl).BorderIcons, TCustomForm(AWinControl).FormStyle);
{$ENDIF}


It saves the modifications
To compile lazarus, enters in Tools-> Build Lazarus configures


.Selects widget QT(beta)
.It marks Build All
.Click in Build
.After to conclude the compilation marks "Build IDE with Packages"
.Click in Build

If everything will right, must re-compile lazarus with widget QT, that although to have some bugs, of the much more pretty final resulted one. Soon I will be post here bugs that to find.

Best regards

Fortes Report for lazarus vs 0.3.5.6

FortesReport4Lazarus
Versão 0.3.5.6
Screenshots

Windows XP


Linux with LCL Qt widget


running under Wine:


Report page 1

Printer setup

Report page 2

To download latest version click here

English version

Todo:
.To visualize report in time of design
.To correct bug that it hinders to visualize components in linux when recharging the project (obs: in windows it loads perfectly)
.To correct bug of the RLPreview component
.To implement rotate function in the components RLAngleLabel and RLBarcode


Historic

28/07/2009:

.Draftfilter functioning perfectly in the standard mode of the FortesReport

The standard mode is configured automatically when it inserts the Draftfilter component in form, being the standard the following one:
WINDOWS
DeviceKind :=dkPrinterPort;
DevicePath :='prn';

Linux
DeviceKind :=dkProgram;
DevicePath :='lpr -P%p %f';


27/07/2009:
Unit RLPrinters
.Correções para as funções:

LoadPrintersList no linux
GetPrinterDevice no linux

23/07/2009:
.in linux, it does not need the library more than libborqt-6.9.0-qt2.3.so
. Draftfilter: . Withdrawal all the calls of scanline, before dependent of the DLL, that had functioning badly. Obviously, in some cases it must return some strange value. In my tests it functioned normally
. I obtained to use the DraftFilter in two ways:
1- DeviceKind:=dkFilename;

linux-> DevicePath:='/dev/lp0';
windows-> DevicePath:='prn';
... it functioned perfectly
ou
2- DeviceKind:=dkFilename;
DevicePath:='/tmp/saida.txt';
In this case that txt generated an archive, using the command
$ cat /tmp/saida.txt > /dev/lp0
type c:\saida.txt > prn
...it functioned perfectly


22/07/2009:
.In the linux version, it does not need librlreportshared.so more than
.Corrected bug of the ShowProgress, that I had fixed in True. .DraftFilter did not function, probably problems with the DLL.
21/07/2009:
. Simple listing with Header, ColumHeader, Detail, Summary and Footer functioned perfectly.
. Report with RLGroup functioned perfectly
. It exports to pdf, RichText, HTML and Excel without problems
. Preview functioning perfectly.
. Print functioned perfectly.
. DraftFilter not yet was tested. As soon as I to obtain a dot-matrix printer I will make the tests.
. The components RLBarcode and RLAngleLabel are without the option of rotated, therefore not yet the question of the ScanLine is decided, that does not have in the TBitmap classroom of the freepascal.
. The RLPreview component did not function, of the error and closes lazarus
. Tested in win32 and QT (in my ARCHLINUX) . In the QT it presents problems in IDE when recharging a project with the RLReport component, simply is impossible to modify, therefore it is not possible to discern where they are the components. . In windows beauty functioned, without problems in IDE.
Post its suggestions, you criticize and you doubt so that all let us can take off advantage of this component, and leave it most functional possible. email for contact on the project: dicas4lazarus@yahoo.com.br

terça-feira, 21 de julho de 2009

Fortes Report para lazarus

Terça-feira, 21 de Julho de 2009
Fortes Report para lazarus
Estou disponibilizando a versão para lazarus do excelente gerador de relatorios Fortes Report.

A conversão ainda não está completa, mas pra mim, está perfeitamente funcional.

Essa conversão é baseada na versão 3.24B14.

Não testei tudo, apenas converti, criei um relatorio relativamente complexo, imprimiu beleza, então funciona ok.

As correções efetuadas serão disponibilizadas somente a noite.

Assim que eu aprender como trabalhar com CVS estarei disponibilando o pacote, se possivel, no sourceforge. Quem puder demonstrar como se faz isso, ficarei muito agradecido.

Historico
23/07/2009:
No linux, nao precisa mais da biblioteca libborqt-6.9.0-qt2.3.so
.Draftfilter:
.Retirada todas as chamadas de scanline, antes dependente da dll, que teve mal funcionamento.
Obviamente, em alguns casos deve retornar algum valor estranho. Nos meus testes funcionou normalmente
.Eu consegui usar o DraftFilter de duas maneiras:
1- DeviceKind:=dkFilename;

linux-> DevicePath:='/dev/lp0';
windows-> DevicePath:='prn';
...funcionou perfeitamente
ou
2- DeviceKind:=dkFilename;
DevicePath:='/tmp/saida.txt';
Nesse caso gerou um arquivo txt, usando o comando
$ cat /tmp/saida.txt > /dev/lp0
type c:\saida.txt > prn
...funcionou perfeitamente



22/07/2009:
.Na versão para linux, não precisa mais da librlreportshared.so
.Corrigido bug do ShowProgress, que eu havia fixado em True.
.DraftFilter não funcionou, provavelmente problemas com a dll.

21/07/2009:

.Listagem simples com Header, ColumHeader,Detail, Summary e Footer funcionou perfeitamente.
.Relatorio com RLGroup funcionou perfeitamente
.Exporta para PDF, RichText, HTML e Excel sem problemas
.Preview funcionando perfeitamente.
.Print funcionou perfeitamente.

.DraftFilter ainda não foi testado. Assim que eu conseguir uma impressora matricial eu farei os testes.

.Os componentes RLBarcode e RLAngleLabel estão sem a opção de rotacionar, pois ainda não está resolvido a questão do ScanLine, que não tem na classe TBitmap do freepascal.

.O componente RLPreview não funcionou, da erro e fecha o lazarus
.Testado em win32 e GTK2 (no meu ARCHLINUX)
.Na GTK2 apresenta problemas na ide. Ao recarregar um projeto com o componente RLReport, simplesmente fica impossivel de alterar, pois não é possivel discernir onde estão os componentes.
.No windows funcionou beleza, sem problemas na ide.

Postem suas sugestões, criticas e duvidas para que todos possamos tirar proveito desse componente, e deixa-lo o mais funcional possivel.

email para contato sobre o projeto:
dicas4lazarus@yahoo.com.br

O link para download do componente é:
fortes4lazarus.tar.gz

http://www.4shared.com/file/120192061/cca35d61/fortes4lazarustar.html

Wellcome to Tips for Lazarus

Users of lazarus

They are all welcome ones!

He is with great satisfaction that beginning this work.

Lazarus in its current version (0.9.26) is sufficiently steady, with a well sped up development.

Here they will find tips of programming, interesting tips of configuration, articles, components, links, etc.

I am not none expert in programming, I am only somebody that has great interest in learning and sharing on this wonderful tool that is lazarus.

I cannot promise weekly update, but whenever possible I will be increase docs about paschal programming, configuration of lazarus, tips, manuals, etc.

Thank for all and stay with with God.