Array
(
)

TBitMap...não sei o que esta faltando ou o que sej ao erro..

Cavalcanti.fabio
   - 28 mar 2006

Olá,

vejam esta parte do meu codigo...não estou entendendo nada...na USes coloquei o JPEG e mesmo assim dar erro...:

procedure WallPapper(Image1:TImage);
var
Bitmap: TBitmap;
scwidth:integer;
scheight:integer;
begin
// IMAGEM DE FUNDO
Image1.visible:=false;
scwidth:=screen.width;
scheight:=screen.height;
Bitmap := TBitMap.Create; <<<<--- o erro acontece aqui...
Bitmap.Monochrome:=false;
Bitmap.canvas.Brush.color:=$00E1FFFF;
Bitmap.Width := scwidth; // 1024;
Bitmap.Height := scHeight; //780;
Image1.Picture.assign(Bitmap);
Bitmap.free;

o erro é : Object or Class Type required

valeu galera...

fabio cavalcanti


Massuda
   - 28 mar 2006

No uses da unit onde está dando esse problema, coloque a unit Windows (já deve estar lá) antes da unit Graphics (que também já deve estar lá); avise se por acaso não tiver a unit Windows ou se a unit Windows já estiver antes da Graphics.


Cavalcanti.fabio
   - 30 mar 2006

Olá massuda...sim a unit windows esta antes de graphics...e continua o mesmo erro...muito estranho.

valeu,

fabio


Massuda
   - 30 mar 2006

Experimente fazer assim...#Código

...
Bitmap: Graphics.TBitmap;
...
Bitmap := Graphics.TBitMap.Create;
...



Martins
   - 30 mar 2006


Citação:
Experimente fazer assim...#Código

...
Bitmap: Graphics.TBitmap;
...
Bitmap := Graphics.TBitMap.Create;
...


Curioso o código dele dá erro, olhando superficialmente me parece correto. Agora uma pergunta Massuda, se ele disse q a unit Graphics está declarada, da forma como vc está sugerindo vai mudar em q?


Massuda
   - 30 mar 2006


Citação:
se ele disse q a unit Graphics está declarada, da forma como vc está sugerindo vai mudar em q?
Existe um problema com o TBitmap quando você tem no uses as units Windows e Graphics.

Na unit Windows tem um record com o nome TBitmap enquanto na unit Graphics tem uma classe com o nome TBitmap.

P que acontece quando você escreve apenas TBitmap é que, dependendo da ordem das units no uses, o compilador interpreta TBitmap como sendo um record (que é o que deve estar acontecendo) ou como uma classe.

Usar Graphics.TBitmap indica ao compilador que você está se referindo ao TBitmap da unit Graphics.


Martins
   - 30 mar 2006


Citação:

Citação:
se ele disse q a unit Graphics está declarada, da forma como vc está sugerindo vai mudar em q?
Existe um problema com o TBitmap quando você tem no uses as units Windows e Graphics.

Na unit Windows tem um record com o nome TBitmap enquanto na unit Graphics tem uma classe com o nome TBitmap.

P que acontece quando você escreve apenas TBitmap é que, dependendo da ordem das units no uses, o compilador interpreta TBitmap como sendo um record (que é o que deve estar acontecendo) ou como uma classe.

Usar Graphics.TBitmap indica ao compilador que você está se referindo ao TBitmap da unit Graphics.


Blz Massuda, agora ficou claro, mas isso é um erro, sabe se ainda perdura nas versões mais novas do Delphi?


Massuda
   - 30 mar 2006


Citação:
mas isso é um erro, sabe se ainda perdura nas versões mais novas do Delphi?
Na verdade não é bem um erro... talvez uma pegadinha.

As regras de escopo da linguagem permitem que você use o mesmo nome/símbolo em units diferentes. Por exemplo, você pode ter em diferentes units uma mesma procedure de nome Iniciar e pode executar cada uma delas a partir de uma outra unit fazendo...#Código

...
UnitA.Iniciar;
UnitB.Iniciar;
...



Adriano Santos
   - 30 mar 2006


Citação:

Citação:
mas isso é um erro, sabe se ainda perdura nas versões mais novas do Delphi?
Na verdade não é bem um erro... talvez uma pegadinha.

As regras de escopo da linguagem permitem que você use o mesmo nome/símbolo em units diferentes. Por exemplo, você pode ter em diferentes units uma mesma procedure de nome Iniciar e pode executar cada uma delas a partir de uma outra unit fazendo...#Código

...
UnitA.Iniciar;
UnitB.Iniciar;
...


Martins, acredito que já saiba disso, mas de qualquer forma, complementando o que o Massuda mencionou sobre escopo, também é possível fazer isso na mesma unit, neste caso muda-se a assinatura da procudure e adiciona-se a palavra reservada overload;

#Código

...
public
{ Public declarations }
procedure Iniciar(AParam1, AParam2: String);overload;
procedure Iniciar(AParam1, AParam2: Integer);overload;
end;
...

Implentation

...

procedure TForm1.Iniciar(AParam1, AParam2: String);
begin
ShowMessage(´Escopo 1´);
end;

procedure TForm1.Iniciar(AParam1, AParam2: Integer);
begin
ShowMessage(´Escopo 2´);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Iniciar(´A´,´B´);
Iniciar(0,1);
end;


Mas isso é para outro propósito, exemplifiquei apenas para que fique registrado caso não saiba.


Cavalcanti.fabio
   - 30 mar 2006

valeu deu certo...

fabio


Martins
   - 30 mar 2006


Citação:

Citação:

Citação:
mas isso é um erro, sabe se ainda perdura nas versões mais novas do Delphi?
Na verdade não é bem um erro... talvez uma pegadinha.

As regras de escopo da linguagem permitem que você use o mesmo nome/símbolo em units diferentes. Por exemplo, você pode ter em diferentes units uma mesma procedure de nome Iniciar e pode executar cada uma delas a partir de uma outra unit fazendo...#Código

...
UnitA.Iniciar;
UnitB.Iniciar;
...


Martins, acredito que já saiba disso, mas de qualquer forma, complementando o que o Massuda mencionou sobre escopo, também é possível fazer isso na mesma unit, neste caso muda-se a assinatura da procudure e adiciona-se a palavra reservada overload;

#Código

...
public
{ Public declarations }
procedure Iniciar(AParam1, AParam2: String);overload;
procedure Iniciar(AParam1, AParam2: Integer);overload;
end;
...

Implentation

...

procedure TForm1.Iniciar(AParam1, AParam2: String);
begin
ShowMessage(´Escopo 1´);
end;

procedure TForm1.Iniciar(AParam1, AParam2: Integer);
begin
ShowMessage(´Escopo 2´);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Iniciar(´A´,´B´);
Iniciar(0,1);
end;


Mas isso é para outro propósito, exemplifiquei apenas para que fique registrado caso não saiba.
Blz Massuda e Adriano, tranquilo, isso eu já sabia, faço uso da palavra reservada overload em uma unit de pesquisa q eu tenho aqui.

Mas, valew!!!