-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
o meu esta funcionando corretamente veja se voce não esqueceu de declarar alguma uses .. principalmente a MMSystem uses Windows, Messages, SysUtils, Classes, Graphics, Controls,MMSystem, Forms, Dialogs, StdCtrls, MPlayer, ComCtrls, ExtCtrls, Gauges; com relação ao controle de som procedure TForm1.TrackBar1Change(Sender: TObject); var Count , i : longint; // 4369 begin Count := waveOutGetNumDevs; for i := 0 to Count do begin waveOutSetVolume(i,longint(TrackBar1.position*1369)*65536+longint(TrackBar1.position*1369)); end; end; deixe a propriedade Max do TrackBar1 = 22 modifique tambem essa procedure procedure TForm1.Button8Click(Sender: TObject); begin OpenMP3(fname); Gauge1.MaxValue := GetMP3Len; PlayMP3; Timer1.Enabled := true; end; vai deixar o valor maximo da musica certo abraço
-
modifiquei todo o código ... agora esta funcionando como deveria ( toca as musicas da lista, não trava os botões, e tem um contador da musica para saber a posição final da musica ) o seu controle de som, eu retirei pois não estava funcionando... depois voce verifica isso faça as demais modificações para o seu uso ... o resto agora é com voce ... ok ? unit UPMP3; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls,MMSystem, Forms, Dialogs, StdCtrls, MPlayer, ComCtrls, ExtCtrls, Gauges; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; ListBox1: TListBox; TrackBar1: TTrackBar; Button9: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Timer1: TTimer; Gauge1: TGauge; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; fname : string; //FileName i : integer = 0; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin If opendialog1.Execute = True Then //Shows open dialog begin fname := opendialog1.filename; //Makes fname the filename selected (If one was selected) listbox1.items.add(opendialog1.filename); //Add it to the list box end; end; procedure OpenMP3(FileName: String); begin mciSendString(PChar('open "' + FileName + '" alias mp wait'), nil, 0, 0); end; procedure PlayMP3; begin mciSendString(PChar('play mp'), nil, 0, 0); end; procedure StopMP3; begin mciSendString(PChar('stop mp'), nil, 0, 0); end; procedure PauseMP3; begin mciSendString(PChar('pause mp'), nil, 0, 0); end; procedure CloseMP3; begin mciSendString(PChar('close mp'), nil, 0, 0); end; procedure ForwardMP3(ToPlace: LongInt = 1); var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp position wait'), TmpStr, 128, 0); mciSendString(PChar('play mp from ' + IntToStr(StrToInt(TmpStr) + ToPlace)), nil, 0, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); FreeMem(TmpStr); end; procedure RewindMP3(ToPlace: LongInt = 1); var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp position wait'), TmpStr, 128, 0); mciSendString(PChar('play mp from ' + IntToStr(StrToInt(TmpStr) - ToPlace)), nil, 0, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); FreeMem(TmpStr); end; function GetMP3Len: LongInt; var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp length wait'), TmpStr, 128, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); Result := StrToInt(TmpStr); FreeMem(TmpStr); end; function GetMP3Pos: LongInt; var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp position wait'), TmpStr, 128, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); Result := StrToInt(TmpStr); FreeMem(TmpStr); end; procedure SetMP3Pos(ToPlace: LongInt = 1); begin mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('play mp from ' + IntToStr(ToPlace)), nil, 0, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); end; procedure TForm1.Button2Click(Sender: TObject); begin OpenMP3(fname); end; function lengthmp3(mp3path: string):integer; var nlength: string; begin mciSendString(PChar('open "' + mp3path + '" alias MP3'), NIL, 0, 0); setlength(nlength, 255); mciSendString('status MP3 length', pchar(nlength), length(nlength), 0); result:= StrToInt(nlength); end; procedure TForm1.Button8Click(Sender: TObject); begin OpenMP3(fname); Gauge1.MaxValue := lengthmp3(fname); PlayMP3; Timer1.Enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Gauge1.Refresh; if Gauge1.MaxValue <> 0 then Gauge1.Progress := GetMP3Pos; if Gauge1.Progress = Gauge1.MaxValue then begin Gauge1.Progress := 0; CloseMP3; fname := ListBox1.Items.Strings[listbox1.itemindex+1]; OpenMP3(fname); PlayMP3; end; end; procedure TForm1.Button4Click(Sender: TObject); begin StopMP3; Timer1.Enabled := false; end; procedure TForm1.Button3Click(Sender: TObject); begin PauseMP3; Timer1.Enabled := false; end; procedure TForm1.Button5Click(Sender: TObject); begin RewindMP3; Gauge1.Progress := 0; end; procedure TForm1.Button6Click(Sender: TObject); begin ForwardMP3; end; procedure TForm1.ListBox1Click(Sender: TObject); begin StopMP3; CloseMP3; fname := ListBox1.Items.Strings[listbox1.itemindex]; Gauge1.Progress := 0; Timer1.Enabled := false; end; end. abaço
-
ok... estou modifcando o seu código para o código do post anterior vou criar um contador para a musica depois voce modifica a seu gosto ... aguarde
-
rotinas que podem te ajudar procedure OpenMP3(FileName: String); begin mciSendString(PChar('open "' + FileName + '" alias mp wait'), nil, 0, 0); end; procedure PlayMP3; begin mciSendString(PChar('play mp'), nil, 0, 0); end; procedure StopMP3; begin mciSendString(PChar('stop mp'), nil, 0, 0); end; procedure PauseMP3; begin mciSendString(PChar('pause mp'), nil, 0, 0); end; procedure CloseMP3; begin mciSendString(PChar('close mp'), nil, 0, 0); end; procedure ForwardMP3(ToPlace: LongInt = 1); var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp position wait'), TmpStr, 128, 0); mciSendString(PChar('play mp from ' + IntToStr(StrToInt(TmpStr) + ToPlace)), nil, 0, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); FreeMem(TmpStr); end; procedure RewindMP3(ToPlace: LongInt = 1); var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp position wait'), TmpStr, 128, 0); mciSendString(PChar('play mp from ' + IntToStr(StrToInt(TmpStr) - ToPlace)), nil, 0, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); FreeMem(TmpStr); end; function GetMP3Len: LongInt; var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp length wait'), TmpStr, 128, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); Result := StrToInt(TmpStr); FreeMem(TmpStr); end; function GetMP3Pos: LongInt; var TmpStr: PChar; begin GetMem(TmpStr, 128); mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('status mp position wait'), TmpStr, 128, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); Result := StrToInt(TmpStr); FreeMem(TmpStr); end; procedure SetMP3Pos(ToPlace: LongInt = 1); begin mciSendString(PChar('set mp time format milliSeconds'), nil, 0, 0); mciSendString(PChar('play mp from ' + IntToStr(ToPlace)), nil, 0, 0); mciSendString(PChar('set mp time format tmsf'), nil, 0, 0); end; abraço
-
(Resolvido) Colorir linha do Dbgrid
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
ok... que bom que conseguiu abraço -
com o componente MediaPlayer seria muito mais facil fazer isso mas se quiser tentar descobrir como montar uma função MCI que indique a posição da musica, tente esse link http://www.delphipraxis.net/1175900-post30.html ou veja esse projeto pronto usando MCI https://www.codeproject.com/Articles/63094/Simple-MCI-Player OBS: precisa se cadastrar ( colocar apenas o email ) para poder fazer o download do código abraço
-
voce teria que usar o comando Application.ProcessMessages; mas para ele funcionar corretamente, ele teria que ser inserido no contador da musica, coisa que voce não tem nesse código. abraço
-
a solução no post anterior abraço
-
OBS: voce vai notar que ao tocar a musica, devido ao código voce não vai poder clicar em outro botão, enquanto as musicas não chegarem ao final da lista. nesse caso voce deve usar processmessages para poder liberar os outros botões https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=processmessages+delphi abraço
-
voce colocou o componente Timer ? e colocou o nome de mp3time abraço
-
Seu código está corrigido .... coloque um compontente TTimer para contar o tempo da musica, para poder ir para a proxima unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls,MMSystem, Forms, Dialogs, StdCtrls, MPlayer, ComCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; ListBox1: TListBox; TrackBar1: TTrackBar; Button9: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; mp3time: TTimer; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure FormShow(Sender: TObject); private procedure TestaVolume; procedure MudaVolume; { Private declarations } public { Public declarations } end; var Form1: TForm1; fname : string; //FileName abc: pchar; //Yes I know, wierd variables...but oh well! abc2: pchar; // " " " , " " ... " " " abc3: string; Cont : Integer = 0 ; implementation function GetShortName(sLongName : string) : string; var sShortName : string; nShortNameLen : integer; begin SetLength( sShortName, MAX_PATH ); nShortNameLen := GetShortPathName(PChar(sLongName), PChar(sShortName), MAX_PATH - 1); if(0 = nShortNameLen)then begin end; SetLength(sShortName, nShortNameLen); Result := sShortName; end; function FSI(N: String): pchar; var S : pchar; begin S := PChar(N); FSI := S; end; {$R *.DFM} procedure TForm1.MudaVolume; var WaveCaps : TWaveOutCaps; VolDir, VolEsq : Word; begin VolEsq := Trunc((TrackBar1.Position-100) / 100 * $FFFF); VolDir := Trunc((TrackBar1.Position-100) / 100 * $FFFF); if waveOutGetDevCaps(WAVE_MAPPER, @WaveCaps, sizeof(TWaveOutCaps)) = MMSYSERR_NOERROR then if (WaveCaps.dwSupport and WAVECAPS_VOLUME) <> 0 then WaveOutSetVolume(Integer(WAVE_MAPPER), MakeLong(VolEsq,VolDir)); end; procedure TForm1.TestaVolume; var WaveCaps : TWaveOutCaps; Volume : DWord; begin if waveOutGetDevCaps(WAVE_MAPPER, @WaveCaps, sizeof(TWaveOutCaps)) = MMSYSERR_NOERROR then if (WaveCaps.dwSupport and WAVECAPS_VOLUME) <> 0 then begin WaveOutGetVolume(Integer(WAVE_MAPPER), @Volume); with TrackBar1 do Position := 100 - Trunc(LoWord(Volume) / $FFFF * 100); end; end; procedure TForm1.Button1Click(Sender: TObject); begin If opendialog1.Execute = True Then //Shows open dialog begin fname := opendialog1.filename; //Makes fname the filename selected (If one was selected) listbox1.items.add(opendialog1.filename); //Add it to the list box end; end; procedure TForm1.Button2Click(Sender: TObject); begin OpenDialog1.Filter := '|All Files|*.*'; //Change open dialog to list files If OpenDialog1.Execute=True Then begin ListBox1.Items.LoadFromFile(OpenDialog1.Filename); //Open list end; OpenDialog1.Filter := 'Audio Files|*.mp3;*.wav;*.wma'; //Change open dialog to audio files end; procedure TForm1.FormCreate(Sender: TObject); var nRet : Longint; nNewWidth : Integer; begin nNewWidth := ListBox1.Width + 300; //Set list box's horizontal bar length nRet := SendMessage(ListBox1.Handle, 1045, nNewWidth, 0); //Make list box have a horizontal bar! TestaVolume; end; procedure TForm1.Button3Click(Sender: TObject); begin mciSendString('Pause MM', abc, 0, 0); //Simple enough, pause! end; procedure TForm1.Button4Click(Sender: TObject); begin mciSendString('Stop MM', abc, 0, 0); //Stop audio mciSendString('Close MM', abc, 0, 0); //Close audio for application end; procedure TForm1.Button5Click(Sender: TObject); begin if listbox1.itemindex <0 then showmessage('lista vazia...selecione musica ')else begin mciSendString('Close MM', abc, 0, 0); //Close audio fname := listbox1.Items.strings[listbox1.itemindex]; //Get what was selected abc3 := GetShortName(fname); //Change filename to short file name abc2 := PChar('Open ' + abc3 + ' Alias MM'); //Open file code mciSendString(abc2, abc, 0, 0); //Open the file to play mciSendString('Play MM', abc, 0, 0); //Play the file end; end; procedure TForm1.Button6Click(Sender: TObject); begin mciSendString('Resume MM', abc, 0, 0); //Simple enough, pause! end; procedure TForm1.Button7Click(Sender: TObject); begin SaveDialog1.Filter := 'List Files|*.lst|Txt Files|*.txt|All Files|*.*'; //Change filter to save If SaveDialog1.Execute=True Then begin ListBox1.Items.SaveToFile(SaveDialog1.Filename); //Save list to wherever selected end; end; function lengthmp3(mp3path: string):integer; var nlength: string; begin mciSendString(PChar('open "' + mp3path + '" alias MP3'), NIL, 0, 0); setlength(nlength, 255); mciSendString('status MP3 length', pchar(nlength), length(nlength), 0); result:= StrToInt(nlength); end; procedure TForm1.Button8Click(Sender: TObject); var i : integer; begin if listbox1.itemindex <0 then showmessage('lista vazia...selecione musica ')else begin for i:= 0 to listbox1.items.count - 1 do //// ALTERAÇÃO begin mp3time.Interval := lengthmp3(listbox1.items[i]); mciSendString('Close MM', abc, 0, 0); //Close audio fname := listbox1.Items.strings[i]; //Get what was selected abc3 := GetShortName(fname); //Change filename to short file name abc2 := PChar('Open ' + abc3 + ' Alias MM'); //Open file code mciSendString(abc2, abc, 0, 0); //Open the file to play mciSendString('Play MM', abc, 0, 0); //Play the file sleep(mp3time.Interval); //// ESPERAR O TEMPO DA MUSICA mciSendString('Close MM', abc, 0, 0); //Close audio; end; end; end; procedure TForm1.Button9Click(Sender: TObject); var i : integer; begin for i:=0 to ListBox1.Items.Count-1 do ShowMessage( ListBox1.Items.Strings[i] ); end; procedure TForm1.TrackBar1Change(Sender: TObject); begin MudaVolume ; end; procedure TForm1.FormShow(Sender: TObject); var nRet : Longint; nNewWidth : Integer; begin nNewWidth := ListBox1.Width + 300; //Set list box's horizontal bar length nRet := SendMessage(ListBox1.Handle, 1045, nNewWidth, 0); //Make list box have a horizontal bar! TestaVolume; end; end. veja a Function de contagem do tempo da musica e a alteração no botão 8 ( executar ) abraço
-
ok .... vou ver onde deve ser feita a mudança
-
ok ... estou criando o form com os botões .... me passa o titulo dos botões
-
qual o erro ?
-
não tenho esse componente que voce esta usando, mas se voce consegue reproduzir a musica selecionada, então bastaria voce colocar esse código dentro de um FOR tocaria da musica selecionada até o final da lista exemplo .... não sei se vai funcionar pois não tenho esse componente, mas pela lógica deveria procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin if listbox1.itemindex <0 then showmessage('lista vazia...selecione musica ')else begin For i := listbox1.itemindex to listbox1.Count do begin mciSendString('Close MM', abc, 0, 0); //Close audio fname := listbox1.Items.strings[i]; //Get what was selected abc3 := GetShortName(fname); //Change filename to short file name abc2 := PChar('Open ' + abc3 + ' Alias MM'); //Open file code mciSendString(abc2, abc, 0, 0); //Open the file to play mciSendString('Play MM', abc, 0, 0); //Play the file end; end; end; OBS: voce tem que colocar uma condição para ir somente para o proximo item da lista se a musica atual chegar ao final abraço
-
(Resolvido) Colorir linha do Dbgrid
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
voce vai fazer um TRádioButton para cada linha da tabela ? claro que não ... mas pelo TRádioButton voce vai poder saber se uma linha esta marcada ou não, pela condição do campo do registro ( status ) é bem simples ... coloque mais um campo na sua tabela como mencionei status - numeric ( 1 ) depois no evento DrawColumnCell voce coloca a condição do TRádioButton e a condição para que o registro apareça em vermelho ou verde ai no procedure TForm1.DBGrid1DblClick(Sender: TObject); ( envento duplo click do dbgrid ) voce muda a condição do campo ( Status ) do registro selecionado ( 1 ou 0 ) e vai ficar da maneira como voce quer voce sabe como fazer ? quer tentar fazer sozinho ? abraço -
(Resolvido) Colorir linha do Dbgrid
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
pra voce deixar um produto ativo ou inativo, e mostrar isso no dbgrid, voce deve criar um campo para controle na sua tabela tipo : status ( i ou 0 para Inativo ) e ( a ou 1 para ativo ) char ou numerico dessa forma voce tera o controle no dbgrid que será mostrado em vermelho ou verde no ( DrawColumnCell ) depois , basta voce clicar duas vezes na linha selecionada para mudar a condição abraço -
tente esses links https://www.justsoftwaresolutions.co.uk/files/dbxopenmysql5_source.zip https://www.justsoftwaresolutions.co.uk/files/dbxopenmysql5_dll.zip abraço
-
era só fazer os ajustes procedure TForm1.Button1Click(Sender: TObject); var s : string; sAltitude, sBairro, sCEP, sLatitude, sLongitude, sLogradouro, sCidade, sDDD, sIBGE, sEstado : string ; begin s := '{"altitude":533.2,"bairro":null,"cep":"17290000","latitude":"-22.504198","longitude":"-48.71221","logradouro":"Macatuba","cidade":"Macatuba","ddd":14,"ibge":"3528007","estado":"SP"}'; delete(s,1,Pos(':', S)-1); sAltitude := copy(s,Pos(':', S)+1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sBairro := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sCEP := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sLatitude := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sLongitude := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sLogradouro := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sCidade := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sDDD := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sIBGE := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); delete(s,1,Pos(':', S)); sEstado := copy(s,2,2); showmessage(sEstado); end; OBS: esse código ainda poderia ser mais curto ...é só observar e ver o que poderia ser melhorado abraço
-
ok... o que voce fez, foi apenas outra forma de obter o mesmo resultado voce poderia ter feito assim tambem procedure TForm1.Button1Click(Sender: TObject); var S: string; begin S := ' altitude":533.2,"bairro":null,"cep":"17290000","latitude; sAltitude := copy(s,Pos(':', S)+1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sBairro := copy(s,Pos(':', S)+1,Pos(',', S)-1); delete(s,1,Pos(',', S)); // repetir para as demais variaveis end; OBS: a string S receberia a linha do Memo
-
altitude":533.2,"bairro":null,"cep":"17290000","latitude voce tem como delimitadores o ( : ) dois pontos e a ( , ) virgula use o comando POS do delphi ( veja no help F1 ) para procurar o ( : ) e limite a contagem na virgula jogue o valor da linha do Memo em uma string extraia os caracteres da string ( use o comando COPY ) nesse intervalo e atribua o valor para as variaveis ( sAltitude , sBairro, sCEP, sLatitude, etc..) depois, delete a string ( use o comando DELETE ) nesse intervalo e repita a operação até o final abraço
-
link do forum consiga o arquivo QRTEE.pas e compile ... se mostrar erro, coloque o erro aqui abraço
-
o código é em delphi, e voce pode salvar o resultado no banco MYSQL abraço
-
(Resolvido) "Alterar imagem de fundo de uma aplicação Delphi"
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
procedure TForm2.Image1DblClick(Sender: TObject); begin if OpenPictureDialog1.Execute then begin Form2.IBTable1.Active := true; // Form2.IBTable1.Last; // Form2.IBTable1.Insert; Form2.IBTable1IMAGE.Value =(OpenPictureDialog1.FileName); Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); image1.Stretch := false; Form2.IBTable1.Post; end; end; procedure TForm2.FormCreate(Sender: TObject); begin Form2.IBTable1.Active := true; if form2.ibtable1image.value <>'' then begin Image1.Visible:=true; Image1.Picture.Loadfromfile(Ibtable1image.value); end else begin Image1.Visible:=false; showmessage('caminho não encontrado'); end; end; OBS: primeiro voce tem que dizer se esta salvando todos os caminhos da foto que voce alterar ( veja que tirei o comando Form2.IBTable1.Insert; ) se voce usar o comando Insert, cada vez que voce selecionar uma foto, o caminho da mesma será gravado na tabela. nesse caso quando voce abre novamente o Form, será sempre o primeiro caminho da foto que estiver lá na tabela, que será carregado para o componente IMage1 se quiser que seja o caminho da ultima foto, basta voce colocar no Evento OnCreate do Form procedure TForm2.FormCreate(Sender: TObject); begin Form2.IBTable1.Active := true; Form2.IBTable1.Last; // PEGA O ULTIMO CAMINHO SALVO NA TABELA if form2.ibtable1image.value <>'' then begin Image1.Visible:=true; Image1.Picture.Loadfromfile(Ibtable1image.value); end else begin Image1.Visible:=false; showmessage('caminho não encontrado'); end; end; (Sugestão) Pela foto parece ser um sistema de Lanchonete ... se voce quer realmente usar fotos, não coloque as fotos aparecendo no form todo, mas coloque numa janela pequena abraço -
(Resolvido) "Alterar imagem de fundo de uma aplicação Delphi"
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
para salvar a imagem e recupara-la quando abrir novamente a aplicação, faça assim procedure TForm1.Image1DblClick(Sender: TObject); begin if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); Image1.Picture.SaveToFile('c:\imagem.bmp'); end; end; procedure TForm1.FormCreate(Sender: TObject); begin Image1.Picture.LoadFromFile('c:\imagem.bmp'); end; para a imagem ficar proporcional a tela, a imagem deve ter o mesmo tamanho da tela, para a propriedade Stretch = false; se a propriedade Stretch = true, a imagem será esticada para caber dentro da área do TImage. abraço