Ir para conteúdo
Fórum Script Brasil

António44

Membros
  • Total de itens

    168
  • Registro em

  • Última visita

Posts postados por António44

  1. Nunca me tinha acontecido ,isto???

    Na tabela uso campo Auto incremento mas quando grava não ordena os registos e no scroll do mouse com o foco no dbGrid  passa do primeiro para o ultimo e do ultimo para o primeiro registo na DBgrid se DBgrid  não estar no foco rola normal passando os registos  1 em 1  ???

    Mas no DbNavigator passa sempre os  registos normal ???.

    Faz isto em todas as tabelas que uso campo +Auto incremento.

    Poderiam ter uma ideia do problema?

    Agradecido

  2. procedure TFotoskiko.BitBtn4Click(Sender: TObject);
    Var
    g:integer;
    begin
    g:= 0;
    JvThumbView1.Selected:=(JvThumbView1.Selected+(g+1));
    end;
    
    procedure TFotoskiko.BitBtn5Click(Sender: TObject);
    Var
    g:integer;
    begin
    g:= 0;
    JvThumbView1.Selected:=(JvThumbView1.Selected-(g+1));
    end;

    Consegui com esta solução,não está 100% mas funciona bem para navegar no  JvThumbView e mostrar foto em maiores dimensões no JvThumbnail .

    procedure TKikinho.FormShow(Sender: TObject);
    begin
    JvThumbnail1.FileName:=(Fotoskiko.JvThumbView1.SelectedFile);
    end;
    procedure TKikinho.BitBtn2Click(Sender: TObject);
    Var
    g:integer;
    begin
    g:= 0;
    JvThumbnail1.FileName:='';
    Fotoskiko.JvThumbView1.Selected:=Fotoskiko.JvThumbView1.Selected+(g-1);
    sleep(20);
    Timer1.Enabled:=true;
    end;
    procedure TKikinho.Timer1Timer(Sender: TObject);
    begin
    JvThumbnail1.FileName:=(Fotoskiko.JvThumbView1.SelectedFile);
    Timer1.Enabled:=false;
    end;
    procedure TKikinho.BitBtn3Click(Sender: TObject);
    Var
    g:integer;
    begin
    g:= 0;
    JvThumbnail1.FileName:='';
    Fotoskiko.JvThumbView1.Selected:=Fotoskiko.JvThumbView1.Selected+(g+1);
    sleep(20);
    Timer1.Enabled:=true;
    end;

    Se por acaso surgir por ai uma ideia melhor por favor me passem.

    Obrigado

  3. 3 horas atrás, António44 disse:

      Teste assim ,data 31 de Agosto seleccionada no Calendar e avançe para o més seguinte no scrollbar que será Setembro  de 30 dias, como o 31 não existe no més  de Setembro dá erro.

    Resolvido;

      
         if ScrollBar1.Position=1 Then
          Panel1.Caption:='Janeiro'
         Else if ScrollBar1.Position=2 Then
          Panel1.Caption:='Fevereiro'
         Else if ScrollBar1.Position=3 Then
          Panel1.Caption:='Março'
         Else if ScrollBar1.Position=4 Then
          Panel1.Caption:='Abril'
         Else if ScrollBar1.Position= 5 Then
          Panel1.Caption:='Maio'
         Else if ScrollBar1.Position=6 Then
          Panel1.Caption:='Junho'
         Else if ScrollBar1.Position=7 Then
          Panel1.Caption:='Julho'
         Else if ScrollBar1.Position=8 Then
          Panel1.Caption:='Agosto'
         Else if ScrollBar1.Position=9 Then
          Panel1.Caption:='Setembro'
         Else if ScrollBar1.Position=10 Then
          Panel1.Caption:='Outubro'
         Else if ScrollBar1.Position=11 Then
          Panel1.Caption:='Novembro'
         Else if ScrollBar1.Position=12 Then
          Panel1.Caption:='Dezembro';
         if ScrollBar1.Position=13 Then begin
          ScrollBar1.Position:=1;
           Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)+1);
            end;
         if ScrollBar1.Position=0 Then begin
          ScrollBar1.Position:=12;
           Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)-1);
            end;
    Calendar1.NextMonth; Usando assim funciona na perfeição
         //Calendar1.Month:=ScrollBar1.Position;>>>>>>Retirado
       Calendar1.Year:=StrToInt(Panel3.Caption);
    
    end;

    Obrigado.

  4. 5 horas atrás, Jhonas disse:

    Acho que é isso que voce está querendo fazer

    
    procedure TForm1.ScrollBar1Change(Sender: TObject);
    begin
    
         if ScrollBar1.Position=1 Then
          Panel1.Caption:='Janeiro'
         Else if ScrollBar1.Position=2 Then
          Panel1.Caption:='Fevereiro'
         Else if ScrollBar1.Position=3 Then
          Panel1.Caption:='Março'
         Else if ScrollBar1.Position=4 Then
          Panel1.Caption:='Abril'
         Else if ScrollBar1.Position= 5 Then
          Panel1.Caption:='Maio'
         Else if ScrollBar1.Position=6 Then
          Panel1.Caption:='Junho'
         Else if ScrollBar1.Position=7 Then
          Panel1.Caption:='Julho'
         Else if ScrollBar1.Position=8 Then
          Panel1.Caption:='Agosto'
         Else if ScrollBar1.Position=9 Then
          Panel1.Caption:='Setembro'
         Else if ScrollBar1.Position=10 Then
          Panel1.Caption:='Outubro'
         Else if ScrollBar1.Position=11 Then
          Panel1.Caption:='Novembro'
         Else if ScrollBar1.Position=12 Then
          Panel1.Caption:='Dezembro';
    
         if ScrollBar1.Position=13 Then
         begin
            ScrollBar1.Position:=1;
            Calendar1.Year := Calendar1.Year+1;
         end;
    
         if ScrollBar1.Position=0 Then
         begin
            ScrollBar1.Position:=12;
            Calendar1.Year := Calendar1.Year-1;
         end;
    
         Calendar1.Month:=ScrollBar1.Position;
         Panel3.Caption:= inttostr(Calendar1.Year);
    end;

    abraço

      Teste assim ,data 31 de Agosto seleccionada no Calendar e avançe para o més seguinte no scrollbar que será Setembro  de 30 dias, como o 31 não existe no més  de Setembro dá erro.

  5. 11 horas atrás, Jhonas disse:

    Voce não respondeu a minha pergunta....

    O erro ocorre nessas linhas ?

    
         Calendar1.Month:=ScrollBar1.Position;
       Calendar1.Year:=StrToInt(Panel3.Caption);
    
    
    "Argumento inválido para codificação de data".

    significa que voce esta tentanto atribuir um valor invalido para a data

     

    Sim,mas terá um jeito de ultrapassar isso? estou por exemplo com uma data de 31 seleccionada no Calendar e avanço para o més seguinte no scrollbar que será de 30 dias, como o 31 não existe no més dá erro. Como contorno isso? Ao avançar para o més seguinte se for de 30.

  6. Dias de 31 ou 29 no bisexto gera erro."Invalid argument to date encode".
    alguém pode dar uma ajuda a contornar isso?
    
    
    procedure TFormAgenda.ScrollBar1Change(Sender: TObject);
    begin
         if ScrollBar1.Position=1 Then
          Panel1.Caption:='Janeiro'
         Else if ScrollBar1.Position=2 Then
          Panel1.Caption:='Fevereiro'
         Else if ScrollBar1.Position=3 Then
          Panel1.Caption:='Março'
         Else if ScrollBar1.Position=4 Then
          Panel1.Caption:='Abril'
         Else if ScrollBar1.Position= 5 Then
          Panel1.Caption:='Maio'
         Else if ScrollBar1.Position=6 Then
          Panel1.Caption:='Junho'
         Else if ScrollBar1.Position=7 Then
          Panel1.Caption:='Julho'
         Else if ScrollBar1.Position=8 Then
          Panel1.Caption:='Agosto'
         Else if ScrollBar1.Position=9 Then
          Panel1.Caption:='Setembro'
         Else if ScrollBar1.Position=10 Then
          Panel1.Caption:='Outubro'
         Else if ScrollBar1.Position=11 Then
          Panel1.Caption:='Novembro'
         Else if ScrollBar1.Position=12 Then
          Panel1.Caption:='Dezembro';
         if ScrollBar1.Position=13 Then begin
          ScrollBar1.Position:=1;
           Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)+1);
           
            end;
         if ScrollBar1.Position=0 Then begin
          ScrollBar1.Position:=12;
           Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)-1);
            end;
         Calendar1.Month:=ScrollBar1.Position;
       Calendar1.Year:=StrToInt(Panel3.Caption);
    end;

     

  7. 4 horas atrás, Jhonas disse:

    ok... então voce deve criar um campo porcentagem na sua tabela

    depois voce pode optar por 2 formas de colocar essa porcentagem nos registros

    1 - crie um comando For para varrer todos os registros da tabela e  atribua ao campo porcentagem o valor que voce quer

    exemplo:

    
    var i : integer;
    begin
       ClientDataSet1.Open;
       for i := 0 to ClientDataSet1.RecordCount -1 do
          begin
             ClientDataSet1.Edit;
             ClientDataSet1PORCENT.Value := 0.35;  //  35%
             ClientDataSet1.Post;
             ClientDataSet1.ApplyUpdates(-1);
             ClientDataSet1.Next;
          end;
    end;

     

    2 - use o comando UPDATE dentro da propriedade SQL do componente Query ou IBQuery ou outro, dependendo do seu banco de dados, para  mudar todos registros com um só comando

    update nome_tabela set Campo  = 0.35  ( 35% )       

    Update produtos set Porcent  = 0.35     

    ou usando parametros:

    Update produtos set Porcent  = :Perc  

    https://dev.mysql.com/doc/refman/5.7/en/update.html 

    abraço

     

    Resolvido,

    Obrigado

    Abraço

  8. 4 horas atrás, Jhonas disse:

    Se eu quiser mudar essa percentagem em todos os registros tenho que calcular 1 a 1 .

    há maneira de alterar em todos os registros de uma só vez?

    quando voce fala de alterar em todos os registros de uma só vez? 

    voce está se referindo a todos os registros da sua tabela ou somente a registros específicos ?

    essa porcentagem é igual para todos os registros ?

    Obs : dê sempre um exemplo do que voce quer fazer... facilita o entendimento

    abraço

    No campo1 Valor * percentagem   campo2 = resultado .

    Sim a percentagem será igual para todos.

    Sim em todos os registos de uma só vez baseado na percentagem escolhida. 

    Abraço

  9. Tenho uma Tabela com 2 campos  Valor da compra,Valor da venda.

    Ao valor da compra no enter do dbedit atribuo uma percentagem que é o resultado do valor da venda.

    Se eu quizer mudar essa percentagem em todos os registos tenho que calcular 1 a 1 .

    há maneira de alterar em todos os registos de uma só vez?

    Obrigado

    abraço

  10. Boas Jhonas, eu resolvi assim.

    Uma vez que se tratava de problema na ultima faixa,não havia necessidade de activar o Timer1 então passei o Gauge1 para outro, Timer2 e assim testa logo se esta no ultimo não activa o timer1,  e funciona muito bem .

    procedure TForm1.DBGridWithRuler1DblClick(Sender: TObject);
    begin
        MediaPlayer1.Close;
    
       // tirar a musica da tabela e salvar no disco
       Query1MP3.SaveToFile('c:\musica.mp3');
    
       // abrir a musica pelo MediaPlayer e tocar
    
       MediaPlayer1.FileName := 'c:\musica.mp3';
       MediaPlayer1.Open;
       FlatGauge1.MaxValue := MediaPlayer1.Length;
        
          MediaPlayer1.Play;
          timer2.Enabled := true;
    
           cap := Query1Nome.Value;;
           ncar := 0;
    
    
                    if not Query1.Eof then
           timer1.Enabled := true;
             
    end;
    procedure TForm1.Timer2Timer(Sender: TObject);
    begin
       FlatGauge1.Refresh;
    
      if FlatGauge1.MaxValue <> 0 then
         FlatGauge1.Progress := MediaPlayer1.Position;
    
      if  FlatGauge1.Progress = FlatGauge1.MaxValue then
          begin
             FlatGauge1.Progress := 0;
    end;
    end;

    Obrigado amigo por sua ajuda valeu...eu uso o Delphi para pequenos projectos, eu trabalho com WinCC Controle Center da Siemens.

     Abraço

  11. amigo, pelo que eu vejo, voce tem pouca experiencia com o delphi ...

    É verdade não tenho não,mas a verdade é que ta dando isso ai...

    Uso 10MB no campo.

    Uso o DBNavigator.

    Uso o código exactamente como vc passou ,e como eu disse no post anterior.

    abraço

    Iniciando o exe  se o ultima faixa estiver visivel na DBgrid e vc der click directo ela toca normal sem problema,mas se a ultima faixa não está visivel no Dbgrid e vc tiver que navegar ela até  aparecer o ultimo,(Dbnavigator ou scroll....) quando vcclicka  faz play mas pára logo.

    Eu já testei de várias maneiras ....mudei as faixas porque poderiam estar corrompidas o tamanho tb não tem problema o campo tem 10MB...???? não sei mais.

    Abraço

  12. E verdade vc tinha razão Jhonas,a musica tava memo corrompida.

    Uffff

    Abraço

    Pois eu deleitei 2 ou 3 registos e a DBgrid ficou com os registos todos visiveis,,,,????

    Afinal não esta resolvido não... o problema é com certeza na DBgrid porque se a ultima faixa estiver visivel na DBgrid e vc der click ela toca normal,mas se a ultima faixa não está visivel e vc tiver que rolar ela até  aparecer o ultimo, quando vc faz play pára logo, ou seja pelo rolar da DBgrid ja detectou o ultimo registo e não faz o play faz logo o stop,iniciando logo directo sem rolar a dbgrid tudo bem porque só depois com a acção do timer1 é que vai detectar que é o ultimo registo e faz o stop....como resolver isto.?

    Abraço

  13. Criei um novo projeto testei o código que vc passou e da o mesmo erro...

    Ao iniciar o programa vou para a ultima faixa faço um click e arranca a faixa e para logo...ou seja deteta logo ai o final da Query e faz um stop.

    Se fazer o play da ultima pelo botão 2.

    procedure TForm1.Button2Click(Sender: TObject);
    begin
       Query1.Active := false;
       Query1.Active := true;
    
       MediaPlayer1.Close;
    
       // tirar a musica da tabela e salvar no disco
       Query1MP3.SaveToFile('c:\musica.mp3');
    
       // abrir a musica pelo MediaPlayer e tocar
    
       MediaPlayer1.FileName := 'c:\musica.mp3';
       MediaPlayer1.Open;
       MediaPlayer1.Play;
    end;

    ele faz o play mas ai não anda o Gauge1.

    Abraço

     

  14. Eu usei assim e passa as faixas na boa mas se eu iniciar em qualquer fixa,mas se ir logo directo para a ultima faixa e fazer um play ele arranca e para logo...

    procedure TFplay.Timer3Timer(Sender: TObject);
    begin
    if MediaPlayer1.Position = MediaPlayer1.Length then
    begin
    Data.Query1.next;
    Play.Click;
     end else
     Begin
    if Data.Query1.Eof then
    begin
    MediaPlayer1.Stop;
    timer3.Enabled := false;
    end;
    end;
    end;

     

  15. Vou usar dbgrid para passar lista, então com um timer eu faço mudar de faixa mas quando chega na  ultima fica repetindo eu queria que parasse quando teminar a ultima faixa.

    procedure TFplay.Timer3Timer(Sender: TObject);
    begin
    if MediaPlayer1.Position = MediaPlayer1.Length then
    begin
    with DB1 do begin
    if SelectedIndex = Columns.Count - 1 then // Se o item atual do DbGrid não for o último campo ele muda de campo mas se é o ultimo ele repete.
    begin
    DB1.SetFocus;
    Query1.Next;
    ....
    end;
    end;
    end;
    end;

     

  16.  dando erro aqui.

    Erro .  Cannot modify a read-only dataset.

    procedure TForm1.FlatSpeedButton1Click(Sender: TObject);
    begin
     If opendialog1.Execute Then
     begin
       // musica selecionada na pasta
       nome_musica := opendialog1.filename;
    
       // gravar na tabela
       Query1.Active := false;
       Query1.Active := true;
    
       Query1.Last;
       Query1.Insert;
       Query1.Edit;
    
       Query1Nome.Value := nome_musica;
      Query1MP3.LoadFromFile(nome_musica);
       Query1.Post;
    
       showmessage('Musica Salva');
     end;
    end;

     

  17. Tenho aqui uma duvida no Trackbar.

    Com Max= 22 ele funciona bem, mas se eu meter o Max=100 e por exemplo Position=40 inicia bem o som mas quando aumento no trackbar nos 50%  e nos 100% quase fica sem som porque será?

    Eu queria usar um som acima dos Max=22 ? 

    procedure TRegistoMolduras.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;

    Abraço

×
×
  • Criar Novo...