Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2017, 08:44   #1
zubadapo
Новичок
Джуниор
 
Регистрация: 13.06.2017
Сообщений: 5
По умолчанию Построение графика и комментарии по коду нужны

Привет. Как происходит закрашивание в графика?
Может кто-нибудь поможет, крокомментировать к вкратце код.

Код:
var
  Form1: TForm1;
  valueMin: real=0;
  valueMax: real=1;
  valueN: integer=10;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var b: TBitmap;
begin
  init_calc_functions;
  init_draw_functions;
  b:=TBitmap.Create;
  b.LoadFromResourceName(hInstance, 'INTEGRAL');
  b.Transparent:=true;
  b.TransparentColor:=clWhite;
  FunctionFormula.Width:=b.Width;
  FunctionFormula.Height:=b.Height;
  FunctionFormula.Canvas.Brush.Color:=$00BAEDEF;
  FunctionFormula.Canvas.FillRect(Rect(0, 0, b.Width, b.Height));
  FunctionFormula.Canvas.StretchDraw(Rect(0, 0, b.Width-1, b.Height-1), b);
  b.Free;
  Panel1.Left:=FunctionFormula.Left+FunctionFormula.Width;
  Panel1.Height:=FunctionFormula.Height;
  Panel1.Top:=FunctionFormula.Top;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if ((Edit1.Text='') or (Edit1.Text='') or (Edit1.Text='')) then
  begin
    MessageDlg('Ââåäèòå ÂÑÅ òðåáóåìûå çíà÷åíèÿ!', mtWarning, [mbOK], 0);
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.SomeEditKeyPress(Sender: TObject; var Key: Char);
var i: integer;
    s: string;
begin
   // Application.MessageBox('Press', '');
  if (((Key>='0') and (Key<='9')) or (ord(Key)=VK_BACK) or ((Key=',') and (Sender<>Edit3))) then
  begin
    if Key=',' then
    begin
      s:=(Sender as TEdit).Text;
      for i:=1 to length(s) do
        if (s[i]=',') then
        begin
          Application.MessageBox(PChar(inttostr(i)), '');
          Key:=chr(0);
          break;
        end;
    end;
  end
  else
    Key:=chr(0);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.SomeEditChange(Sender: TObject);
var r: real;
begin
  //  Application.MessageBox('Change', '');
  if Sender=Edit3 then
  begin
    if ((Sender as TEdit).Text<>'') then
      valueN:=StrToInt((Sender as TEdit).Text);
  end
  else if ((Sender=Edit1) or (Sender=Edit2)) then
  begin
    if (Sender as TEdit).Text<>'' then
    begin
        try
          r:=StrToFloat((Sender as TEdit).Text);
        except
          on EConvertError do begin
                                if Sender=Edit1 then
                                  (Sender as TEdit).Text:=FloatToStr(valueMin)
                                else if Sender=Edit2 then
                                  (Sender as TEdit).Text:=FloatToStr(valueMax);
                                exit;
                              end;
        end;
        if Sender=Edit2 then
        begin
          valueMax:=r;
          FunctionFormula.Canvas.TextRect(Rect(0, 0, 155, 18), 87-FunctionFormula.Canvas.TextWidth((Sender as TEdit).Text) div 2, 2, (Sender as TEdit).Text)
        end
        else
        begin
          valueMin:=r;
          FunctionFormula.Canvas.TextRect(Rect(0, 58, 155, 74), 87-FunctionFormula.Canvas.TextWidth((Sender as TEdit).Text) div 2, 60, (Sender as TEdit).Text);
        end;
    end
    else
    begin
        FunctionFormula.Canvas.Font.Size:=10;
        if Sender=Edit2 then
          FunctionFormula.Canvas.TextRect(Rect(0, 0, 155, 18), 87-FunctionFormula.Canvas.TextWidth('') div 2, 2, '')
        else
          FunctionFormula.Canvas.TextRect(Rect(0, 58, 155, 74), 87-FunctionFormula.Canvas.TextWidth('') div 2, 60, '');
    end;
  end;

  if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (valueMax>valueMin) and (valueN>0)) then
  begin
    drawArray[MethodSelector.ItemIndex+1](DisplayChart, valueMin, valueMax, valueN);
  end
  else
  begin
    SeriesFunction.Clear;
    DisplayChart.LeftAxis.Maximum:=0;
    SeriesPatterned.Clear;
  end;

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
var s: string;
label
  calc;
begin
  calc:
  if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (valueMax>valueMin) and (valueN>0)) then
  begin
    //Calculate our function
    Edit4.Text:=FloatToStr(calcArray[MethodSelector.ItemIndex+1](valueMin, valueMax, valueN));
  end
  else if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (valueMax<valueMin) and (valueN>0)) then
  begin
    if MessageDlg('Âåðõíÿÿ ãðàíèöå ìåíüøå íèæíåé!'#13#10'Ïîìåíÿòü èõ ìåñòàìè?', mtInformation, [mbYes, mbNo], 0)=mrYes then
    begin
      s:=Edit2.Text;
      Edit2.Text:=Edit1.Text;
      Edit1.Text:=s;
      goto calc;
    end;
  end
  else if ((Edit1.Text<>'') or (Edit2.Text<>'') or (Edit3.Text<>'')) then
    MessageDlg('Çàïîëíèòå ÂÑÅ ïîëÿ!', mtInformation, [mbOK], 0)
  else
    MessageDlg('Îøèáêà â äàííûõ!', mtError, [mbOK], 0);
end;

procedure TForm1.MethodSelectorClick(Sender: TObject);
begin
  drawArray[MethodSelector.ItemIndex+1](DisplayChart, valueMin, valueMax, valueN);
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  SeriesPatterned.AreaLinesPen.Visible:=(Sender as TCheckBox).Checked;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  SomeEditChange(Edit1);
  SomeEditChange(Edit2);
end;
zubadapo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужны комментарии к коду Nabi92 Помощь студентам 0 14.06.2015 15:45
"Ханойские башни", нужны комментарии к коду Slimping Общие вопросы C/C++ 0 17.05.2015 20:14
Нужны комментарии к коду ClasterON Microsoft Office Excel 22 25.09.2012 18:43
Ввести числа и вычислить значение выражения. Выдать результат. (Нужны подробные комментарии по коду программы) olo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 05.06.2012 12:14
комментарии к коду leahov Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 09.06.2009 13:09