Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Markissimo

Problemas com DBImage e for em nome de label

Recommended Posts

Galera, sou novo aqui, esse eh meu primeiro post =p

estou com um problema aqui que ja ta me dando nos nervos..

 

Estou fazendo um programa simples aqui de comparação de carros para um jogo...

vou colocar uma print aqui pra ficar mais fácil de entender..

 

Imagem Postada

(como vcs podem ver ainda nem terminei os labels =P)

 

vamos primeiro ao problema do FOR

vamos pegar a parte de Speed como exemplo:

temos ali

SpeedV1

SpeedV2

até

SpeedV9

 

e temos 2 campos, um para um carro e o outro para o outro carro

os nomes das labels são assim:

lblspeed1v1 (corresponde a primeira label que é a do primeiro carro no modo V1)

lblspeed2V1(corresponde a segunda label que é a do segundo carro também no modo V1)

lblspeed1V2

lblspeed2V2

e assim por diante até lblspeed1V9 e lblspeed2V9

 

e para fazer a comparação eu faço o seguinte:

 

if(strtoint(lblSpeed1V1.Caption) > strtoint(lblSpeed2V1.Caption))then

begin

lblspeed1v1.Font.Color := clLime;

lblspeed2v1.Font.Color := clRed;

end;

if(strtoint(lblSpeed1V1.Caption) = strtoint(lblSpeed2V1.Caption))then

begin

lblspeed1v1.Font.Color := clSilver;

lblspeed2v1.Font.Color := clSilver;

end;

if(strtoint(lblSpeed1V1.Caption) < strtoint(lblSpeed2V1.Caption))then

begin

lblspeed2v1.Font.Color := clLime;

lblspeed1v1.Font.Color := clRed;

end;

 

só que assim fica muito feio em termos de codificação sendo que tenho que fazer um desse pra cada V que vai de 1 até 9

então, já que só um número varia entre 1 e 9 eu tive a idéia de fazer um FOR, que varia de 1 a 9 porém, contudo, entretanto quando eu vou rodar ele diz que não existe aquela variavel(o nome da label) dei uma fuçada mas não achei como fazer isso funcionar em nome de label, alguém sabe?

 

tinha ficado mais ou menos assim:

for i := 1 to 9 do

if(strtoint(lblSpeed1Vi.Caption) > strtoint(lblSpeed2Vi.Caption))then

begin

lblspeed1vi.Font.Color := clLime;

lblspeed2vi.Font.Color := clRed;

end;

 

obs: são DBLabels

 

 

bom... esse negócio do FOR é um problema, mas o que eu to mais apanhando mesmo é pra um DBImage...

pra melhor entendimento de vcs, os dados dos carros estão sendo armazenados em um BD em access, e dentro desse BD eu criei um campo chamado FIGURA, no qual seria armazenado uma figura do carro, coloquei como OLE Object.

E esse BD vai ser alimentado manualmente, então, coloquei a foto no campo FIGURA e configurei o DBImage pra pegar a imagem do campo FIGURA do BD só que quando eu seleciono o carro ele da um erro "Bitmap image is not valid" já tentei salvar a imagem de muitos modos (JPG, BMP24bits, BMP32bits, BMP16bits, BMP256, PNG) mas não consigo fazer isso funcionar por nada...

já me deram a sugestão de carregar a imagem especificando o local no próprio programa, só que como estou usando um DBLookUpComboBox ele não tem a propriedade onChange, apenas a onDataChange mas ai a imagem não carrega na hora certa(por exmeplo temos CARRO1 e CARRO2 se eu selecionar o CARRO1 nada acontece, ai quando eu mudo pra CARRO2 ai carrega a imagem do CARRO1 e vice-versa)

 

bom.. se alguem entendeu isso me da uma luz

hAEUhAEUI

 

se não entendeu, pergunte que eu explico

 

vlw =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, markissimo!

 

Bom... a parte do loop não me ficou muito clara, se você puder dar mais detalhes, seria legal.. quanto ao caso da imagem, faça assim:

 

Declare as units Clipbrd e Jpeg na sua uses

 

Depois de pedir a insersão de um novo registro, antes de salvá-lo, execute esse pequeno código:

 

procedure TForm1.Button1Click(Sender: TObject);
var
jpg: TJpegImage;
begin
if OpenPictureDialog1.Execute then
begin
jpg := TJpegImage.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
clipboard.Assign(jpg);
DBImage1.PasteFromClipboard;
jpg.Free;
end;

Pra selecionar com um DBLookUpComboBox, configure a propriedade ListSource para o DataSource que está ligado ao seu DataSet que, como você está usando o Access, imagino que seja um ADOTable.

 

Então:

ListSource para o DataSource

ListField para o Campo da tabela que contém os nomes dos carros, suponho. (Só não pode setar para o campo figura, pois dará erro).

KeyField para o mesmo campo do ListField

 

Quanto ao for, só uma sujestão: porque não usar os valores dos campos do banco de dados ao invés de usar a propriedade Label dos TLabels? É mais seguro em comparações verificar os valores diretamente no BD.

;)

Abçss.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.