Ir para conteúdo

Arquivado

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

Jalmiric

Grafico Gantt

Recommended Posts

Olá pessoal estou querendo desenvolver um gráfico de Gantt em delphi xe8.

Gostaria de saber como fazer para relacionar uma tarefa a outra, informar que uma tarefa só pode começar depois que outra for concluída.

 

Segue imagem abaixo, o que preciso definir é a ligação entre uma barra e outra.

 

https://drive.google.com/file/d/0B45lwS7583JFV1B2S2RzSVhNeW8/view?usp=sharing

 

Quem puder me ajudar agradeço

 

Jalmir

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para seu caso,acho que um 'try' e um 'finally' basta.

 

Podes implementar outros modos,más os únicos que me vem a cabeça é esse ou utilizando variaveis globais :s.

Estude a respeito.

 

Futuras duvidas,não hesite em perguntar !

Compartilhar este post


Link para o post
Compartilhar em outros sites
SBits


Abaixo o que eu consegui implementar, porem não sei como ligar uma parra a outra, você poderia me ajudar?



Chart1.Visible := true;

chart1.ClearChart;

Chart1.View3D := false;

with Chart1.AddSeries(TGanttSeries.Create(self)) as TGanttSeries do

begin

ParentChart := Chart1;

ShowInLegend := true;

XValues.Order:=loNone;

ShowInLegend := false;

Marks.visible := false;

Marks.Transparent := false;

Xvalues.DateTime := true;

//OnGetMarkText:=GetMarkText;

Marks.Clip:=true;

end;


with dm.TbTarefas do

begin

close;

sql.Clear;

sql.Add('select * from tarefas where id_projeto = :p order by inicio');

ParamByName('p').Value := id_projeto;

open;

end;

i := 0;

while not dm.tbTarefas.Eof do

begin

with Chart1[Chart1.SeriesCount - 1] as TGanttSeries do

begin

i := i+1;

(Chart1.Tools.Add(TGanttTool) as TGanttTool).Series:=Chart1[0];

Pointer.VertSize := 6;

AddGantt(date, date + 5, (i*2) div 1, 'Fazer Pesquisa Mercado');

end;

dm.tbTarefas.Next;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrs.

 

Utilize variaveis globais.

 

Defina 'tarefa1' logo abaixo de Form1: TForm1 (vai variar de acordo com o nome do formulario);

 

Code:

Chart1.Visible := true;
chart1.ClearChart;
Chart1.View3D := false;
with Chart1.AddSeries(TGanttSeries.Create(self)) as TGanttSeries do
 begin
  ParentChart := Chart1;
  ShowInLegend := true;
  XValues.Order:=loNone;
  ShowInLegend := false;
  Marks.visible := false;
  Marks.Transparent := false;
  Xvalues.DateTime := true;
  Marks.Clip:=true;
 end;
 
with dm.TbTarefas do
 begin
  close;
  sql.Clear;
  sql.Add('select * from tarefas where id_projeto = :P order by inicio');
  ParamByName('p').Value := id_projeto;
  open;
  tarefa1:= True;
 end;
    
i := 0;

while not dm.tbTarefas.Eof do
 begin
  if (tarefa1=true)
   begin
    with Chart1[Chart1.SeriesCount - 1] as TGanttSeries do
     begin
      i := i+1;
      (Chart1.Tools.Add(TGanttTool) as TGanttTool).Series:=Chart1[0];
      Pointer.VertSize := 6;
      AddGantt(date, date + 5, (i*2) div 1, 'Fazer Pesquisa Mercado');
     end;
     dm.tbTarefas.Next;
   end
   else
    begin
     MessageBox(Application.Handle,'Tarefa 1 não completada','Erro',mb_ok+mb_iconerror);
    end;
 end;

Não sei exatamente se coloquei a linha no lugar correto da operação,más qualquer coisa,só exclui-la e reposiciona-la.

 

Nunca fiz nada em graficos (alem de formularios rsrs) no delphi,más creio que isso podera ajudar.

 

linha adicionada:

tarefa1:= True;

@Editado

Quer ligar um grafico a outro??!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Daniel Jose Sobrinho
      Olá, eu tenho um memo em Delphi com as seguintes linhas
       
      CALDO DE GALINHA
      LEMON PEPPER
       
      Preciso que fique com 10 ponto e virgula, já contando os que vão estar no espaço em branco assim:
       
      CALDO;DE;GALINHA;;;;;;;;
      LEMON;PEPPER;;;;;;;;;
       
      Pra substituir os espaços em branco já usei o stringreplace e funcionou corretamente:
       
      memo1.text := StringReplace(memo1.text,',',';',[rfReplaceAll]);
    • Por jjunior100
      Preciso armazenar o total das páginas de um determinado documento em uma variável no delphi. Sei como inserir a informação no modelo MSWord.Selection.Fields.Add( Range:=MSWord.Selection.Range, Type:=wdFieldEmpty, Text:= 'NUMPAGES * Arabic ', PreserveFormatting:=True);
      mas como armazenar essa informação em uma variável tipo integer? Obrigado
    • Por Hacker_Buiu
      Delphi está na área errada,não deveria ser numa área desktop,ao contrário de web?
    • Por janir.matheus
      Bom dia,
       
      Preciso de ajuda ajuda para resolver o problema de SIGSEGV, basicamente tennho um zconection dentro de uma classe e recebo erro quando tento acessá-lo. Segue um trecho da classe:
      unit unt_classconexao; {$mode objfpc}{$H+} interface uses Classes, SysUtils, ZConnection, ZDataset; type { tConexao } tConexao = class private public vConector : TZConnection; function Listar_Usuarios:TZReadOnlyQuery; procedure Conectar_Banco; end; implementation { tConexao } function tConexao.Listar_Usuarios: TZReadOnlyQuery; var zrquery : TZReadOnlyQuery; begin Conectar_Banco; try zrquery := TZReadOnlyQuery.Create(nil); zrquery.Connection := vConector; zrquery.SQL.Clear; zrquery.SQL.Text := 'SELECT * from tbl_profissionais'; zrquery.Open; Listar_Usuarios := zrquery; finally end; end; procedure tConexao.Conectar_Banco; begin //vConector := TZConnection.Create(nil); vConector.HostName := 'localhost'; vConector.Port := 3306; vConector.Database := 'Caps'; vConector.Protocol := 'mysql-5'; vConector.User := 'root'; vConector.Password := ''; vConector.Connected := true; end; end. Após isso tento fazer uso dessa classe para popular um DBGrid:
      unit unt_frmprincipal; {$mode objfpc}{$H+} interface uses Classes, SysUtils, DB, Forms, Controls, Graphics, Dialogs, Menus, DBGrids, ZConnection, unt_classconexao; type { Tfrm_principal } Tfrm_principal = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; MainMenu_frmPrincipal: TMainMenu; MenuItem_AplicativoSair: TMenuItem; N1: TMenuItem; MenuItem_AplicativoLogin: TMenuItem; MenuItem_Aplicativo: TMenuItem; procedure MenuItem_AplicativoLoginClick(Sender: TObject); private public vConexao : tConexao; end; var frm_principal: Tfrm_principal; implementation {$R *.lfm} { Tfrm_principal } procedure Tfrm_principal.MenuItem_AplicativoLoginClick(Sender: TObject); begin //vConexao := tConexao.Create; DataSource1.DataSet := vConexao.Listar_Usuarios; end; end. A mensagem de erro que recebo dá a entender que o problema ocorre logo que o zconnection começa a ser configurado, como vocês podem ver pelos trechos comentados eu tentei instanciar o componente também sem sucesso. Não tenho experiencia com POO e tenho certeza que estou cometendo um erro bobo, então peço uma explicação sobre como resolver isso. Agradeço de antemão a quem puder me ajudar.
       
      PS. Estou usando o Lazarus.
    • Por Mauricio Molina
      Ola pessoal,
       
      Alguém pode de dar uma força.
       
      Estou trabalhando em um dashbord baseado em boostrap, estou deixando ele bastante dinâmico, e nele coloquei um gráfico de rosca, o problema que não manjo como fazer o JS buscar os dados de forma dinâmica no banco de dados.
       
      HTML:
      <!-- Grafico --> <div class="card-body"> <div class="chart-pie pt-4 pb-2"> <canvas id="myPieChart"></canvas> </div> <div class="mt-4 text-center small"> <span class="mr-2"> <i class="fas fa-circle text-primary"></i> Anúncio </span> <span class="mr-2"> <i class="fas fa-circle text-success"></i> Site </span> <span class="mr-2"> <i class="fas fa-circle text-info"></i> Outros </span> </div> </div> </div> </div> </div> JS:
      // Set new default font family and font color to mimic Bootstrap's default styling Chart.defaults.global.defaultFontFamily = 'Nunito', '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif'; Chart.defaults.global.defaultFontColor = '#858796'; // Pie Chart Example var ctx = document.getElementById("myPieChart"); var myPieChart = new Chart(ctx, { type: 'doughnut', data: { labels: ["Anuncio", "Site", "Outros"], datasets: [{ data: [55, 30, 15], // *os dados deverão ser impressos aqui* backgroundColor: ['#4e73df', '#1cc88a', '#36b9cc'], hoverBackgroundColor: ['#2e59d9', '#17a673', '#2c9faf'], hoverBorderColor: "rgba(234, 236, 244, 1)", }], }, options: { maintainAspectRatio: false, tooltips: { backgroundColor: "rgb(255,255,255)", bodyFontColor: "#858796", borderColor: '#dddfeb', borderWidth: 1, xPadding: 15, yPadding: 15, displayColors: false, caretPadding: 10, }, legend: { display: false }, cutoutPercentage: 80, }, }); Os dados precisam ser somados a cada cadastro no BD, sou seja, a cada cadastro o cliente indicara que a OS veio de um anuncio por exemplo, os campos deveram somar quantas OS vieram de anuncio, site e outros.
       
      Obrigado!
       
       
×

Informação importante

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