Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
1

Визуализировать значения Edit в gauge

17.04.2015, 18:49. Показов 2498. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста с программой! за ранее спасибо.
Суть задачи такова: есть радиогруп в котором подсчитываются за формулами определенные значения, и выводы на эдиты 2,3,4. мне надо визуализировать значения эдитов в gauge. тобто сделать шкалу от 0-100% и за 100% взять значение 500. и что бы значения с эдитов заполняли gauge на определенные проценты.
Вложения
Тип файла: rar прога.rar (180.0 Кб, 19 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2015, 18:49
Ответы с готовыми решениями:

Как значения из DBGrid добавить в Gauge?
Нужно значение каждой строки 3 столбца в DBGrid добавить в каждый Gauge соответственно

Перенос значения Edit в edit на другой форме
на 1 форме есть эдит со значением 1 при нажатии на кнопку надо перенести это значение на эдит...

Компонент Gauge
Хочу добавить компонент gauge на форму, но не знаю как сделать подсчет %. На форме находятся 6...

Индексация Gauge
Доброго времени суток! Делаю прогресс Gauge. Появилась такая проблема: если я цикл пробегаю от 0,...

15
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,158
Записей в блоге: 20
17.04.2015, 20:46 2
если max поставить 500 можно подсчет процентов он сделает сам
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
17.04.2015, 20:49  [ТС] 3
ну я лазил в интернете ничего найти не смог прохожего. а сам такого не учил, даже какой командой сделать єтот подсчет я не знаю если не сложно код выложить буду благодарен!!!!
0
Заблокирован
18.04.2015, 11:06 4
Цитата Сообщение от Qastom Посмотреть сообщение
если не сложно код выложить буду благодарен!!!!
Delphi
1
Gauge.MaxValue:= 500;
Миниатюры
Визуализировать значения Edit в gauge  
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
18.04.2015, 12:11  [ТС] 5
за это спасибо. но мне надо сам код который пойдет в эдит, который заставит gauge заполнятся на определенные проценты.
0
Заблокирован
18.04.2015, 12:26 6
Цитата Сообщение от Qastom Посмотреть сообщение
но мне надо сам код который пойдет в эдит
Ты врёшь!
Цитата Сообщение от Qastom Посмотреть сообщение
мне надо визуализировать значения эдитов в gauge
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
18.04.2015, 12:36  [ТС] 7
не вру. мне надо сделать визуализацию трех Edits с помощью трех gauge. тобто мне Edits выдает определенное число, а gauge должно показать процент от того числа, при максемальном значении 500.
0
Заблокирован
18.04.2015, 12:57 8
Цитата Сообщение от Qastom Посмотреть сообщение
не вру
Врёшь! Про код, который пойдёт в Edit, в вопросе ни слова.
Чо за код-то? И почему он должен пойти в Edit?
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
18.04.2015, 13:05  [ТС] 9
ну я так предположил что он в Еdit должен идти. я описал свою задачу мне надо не сам максимальный или минимальный порядок gauge, а код. который будет отображать в gauge проценты чисел с эдитов.
0
Заблокирован
18.04.2015, 13:27 10
Цитата Сообщение от Qastom Посмотреть сообщение
код. который будет отображать в gauge проценты чисел с эдитов.
Delphi
1
gauge.progress := strtoint(edit.text);
если в edit'ы идут только цифры, замени их на TSpinEdit'ы.
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
18.04.2015, 17:20 11
Eсли выбрать "1" в radiogroup и "1" Edit1

То получим:

x= 1.14 что составляет 0,23% от 500
pis+1.1289 что составляет 0,23% от 500
vod=0.8892 что составляет 0,18% от 500


Вывести проценты на экран не составляет труда.
Сделать визуальную шкалу с ценой деления 0.1 % в принципе возможно,
если размер не имеет значения.

Добавлено через 31 минуту
В коде ниже проценты ( к 500) выведены в Edit5 --- x
Edit6 --- pis
Edit7---- vod

Первый раз рисовал в Delphi -не ругайте сильно, если что не так
Guage показывает % для x в случае выбора "1" в RadioGroup и при Xmax = 9.12 ( "1" в RadioGroup ,"8" в Edit1).

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ExtCtrls,math;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    RadioGroup1: TRadioGroup;
    BitBtn1: TBitBtn;
    PaintBox1: TPaintBox;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
    procedure PaintBox1Paint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
   x,y,pis,vod: extended;
   Proc1,Proc2,Proc3 :extended;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 
 
begin
y:=StrToFloat(Edit1.Text);
case RadioGroup1.ItemIndex of
    0 : begin
    if y>8 then begin
    showmessage('Змініть значення. ви привищіли 8 годин');
   Edit2.Text:='помилка';
      Edit3.Text:='помилка' ;
      Edit4.Text:='помилка' ;
       end;
    if y<=8 then  begin
      x:=(y*1.14)/1 ;
      Edit2.Text:=FloatToStr(x)+' тон';
       end;
       if y<=8 then  begin
      pis:=(x*0.99)/1  ;
       Edit3.Text:=FloatToStr(pis)+' тон';
       end;
       if y<=8 then  begin
      vod:=(x*0.78)/1 ;
      Edit4.Text:=FloatToStr(vod)+' м3';
      end;
 
  end;
    1 : begin
     if y>5 then begin
    showmessage('Змініть значення. ви привищіли 5 змін');
    Edit2.Text:='помилка';
      Edit3.Text:='помилка' ;
      Edit4.Text:='помилка' ;
       end;
      if y<=5 then  begin
      x:=(y*9.12)/1;
       Edit2.Text:=FloatToStr(x)+' тон';
        end;
      if y<=5 then  begin
      pis:=(y*7.92)/1;
       Edit3.Text:=FloatToStr(pis)+' тон';
       end;
      if y<=5 then  begin
      vod:=(y*6.28)/1;
       Edit4.Text:=FloatToStr(vod)+' м3';
        end;
    end;
    2 : begin
     if y>5 then begin
    showmessage('Змініть значення. ви привищіли 5 діб');
    Edit2.Text:='помилка';
      Edit3.Text:='помилка' ;
      Edit4.Text:='помилка' ;
       end;
       if y<=5 then  begin
      x:=(y*18.24)/1;
        Edit2.Text:=FloatToStr(x)+' тон';
        end;
      if y<=5 then  begin
      pis:=(y*15.84)/1;
        Edit3.Text:=FloatToStr(pis)+' тон';
        end;
      if y<=5 then  begin
      vod:=(y*12.57)/1;
        Edit4.Text:=FloatToStr(vod)+' м3';
        end;
    end;
    3 : begin
     if y>5 then begin
    showmessage('Змініть значення. привищіли 5 місяців');
    Edit2.Text:='помилка';
      Edit3.Text:='помилка' ;
      Edit4.Text:='помилка' ;
       end;
        if y<=5 then  begin
      x:=(y*95)/1;
        Edit2.Text:=FloatToStr(x)+' тон';
        end;
         if y<=5 then  begin
      pis:=(y*83)/1;
        Edit3.Text:=FloatToStr(pis)+' тон';
        end;
         if y<=5 then  begin
      vod:=(y*66)/1;
        Edit4.Text:=FloatToStr(vod)+' м3';
        end;
      end;
  end;
   Form1.PaintBox1Paint(Sender);
    Proc1:=100*x/500;
    Proc2:=pis*100/500;
    Proc3:=vod*100/500;
    Edit5.Text:=FloatTostr(Roundto(Proc1,-2)) + '%';
    Edit6.Text:=FloatTostr(Roundto(Proc2,-2)) + '%';
    Edit7.Text:=FloatTostr(Roundto(Proc3,-2)) + '%';
    end;
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 With PaintBox1 do
 begin
 Left:=200;
 Top := 24;
 Width:=300;
 Height:=300;
 end;
 
 
 
 
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
 
 Var
 X1, Y1,X2,Y2, Radius,i: Integer;
  StartAngle, SweepAngle,Alfa,Proc5: Extended;
  Sin1, Cos1,Sin2,Cos2,Sin3,Cos3,Sin4,Cos4: Extended;
begin
  Radius:= 100;
  StartAngle:= 30;
  SweepAngle:= 180-2*StartAngle;
  Proc5:=x*100/9.12;
  if Edit2.text <> ('')then
  if Proc5<=30 then Alfa:=Proc5*12/5;
  if Proc5>30 then Alfa:=30+Round(Proc5)*1.2;
 
  X1:= 200;
  Y1:= 200;
  i:=4;
 
  Sin1:=Sin((StartAngle*Pi)/180);
  Cos1:=Cos((StartAngle)*Pi/180);
  Sin2:=Sin(((SweepAngle+StartAngle)*Pi)/180);
  Cos2:=Cos((SweepAngle+StartAngle)*Pi/180);
 
  Sin3:=Sin((Alfa*Pi)/180);
  Cos3:=Cos((Alfa)*Pi/180);
 
  X2:= X1-Round((Radius-5)*Cos2);
  Y2:=Y1- Round((Radius-5)*Sin2);
  With PaintBox1.Canvas do
begin
 Rectangle(X1-100,Y1-120,X1+100,Y1+20);
 MoveTo(X1+Round(Radius*Cos1), Y1-Round(Radius*Sin1));
 AngleArc(X1, Y1, Radius, StartAngle, SweepAngle);
 MoveTo(X1+Round(Radius*Cos2), Y1-Round(Radius*Sin2));
 LineTo(X1+Round((Radius-10)*Cos2), Y1-Round((Radius-10)*Sin2));
 MoveTo(X1+Round(Radius*Cos1), Y1-Round(Radius*Sin1));
 LineTo(X1+Round((Radius-10)*Cos1), Y1-Round((Radius-10)*Sin1));
 
 for i := 5 downto 1 do
 begin
 Sin4:=Sin(((SweepAngle+StartAngle)*Pi*i)/(5*180));
 Cos4:=Cos((SweepAngle+StartAngle)*Pi*i/(5*180));
 MoveTo(X1+Round((Radius)*Cos4), Y1-Round((Radius)*Sin4));
 LineTo(X1+Round((Radius-10)*Cos4), Y1-Round((Radius-10)*Sin4));
   end;
 AngleArc(X1, Y1, Radius-10, StartAngle, SweepAngle);
 MoveTo(X1, Y1);
 LineTo(Round(X1-(Radius-7)*cos3), Round(Y1-(Radius-7)*sin3));
 
 end;
 
end;
 
 
 
end.
Добавлено через 31 минуту
Можно прорисовать проценты в прямоугольнике .
Примерно так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
rocedure TForm1.PaintBox2Paint(Sender: TObject);
begin
 With PaintBox2.Canvas do
begin
 
  Brush.Style:=bsSolid;
  Brush.Color:=Clblue;
  Rectangle(10,10,100,40);
  Font.Color:=clWhite;
 
  TextOut(10,10,Edit5.text);
 
end;
end;
Ну и естественно обновлять картинку при нажатии Button1.

Удачи....
1
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
18.04.2015, 23:54  [ТС] 12
Narimanych, ну вот подсчет процентов в эдиты, за них спасибо!! в визуализации на эту строку кидает ошибку
AngleArc(X1, Y1, Radius, StartAngle, SweepAngle);

но желательно было бы не графически оформлять заполнение процентов а в gauge.
но все равно спасибо за помощь) если есть возможность код на gauge кинуть буду признателен!
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
19.04.2015, 02:41 13
Qastom

Здесь пример с рисованием и Gauge .
В коде отсутствуют комментарии..
Я думаю и так все понятно, если что-заходи....
Удачи....
Вложения
Тип файла: rar MyGuage.rar (1.63 Мб, 12 просмотров)
1
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
19.04.2015, 03:11 14
Лучший ответ Сообщение было отмечено Qastom как решение

Решение

Цитата Сообщение от Qastom Посмотреть сообщение
если есть возможность код на gauge кинуть буду признателен!
Qastom,

В приложении ваш проект с добавлением Gauges.
Удачи....
Вложения
Тип файла: rar прога.rar (454.5 Кб, 4 просмотров)
1
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 46
19.04.2015, 11:46  [ТС] 15
Narimanych, cпасибо тебе!!!! извини что помучал так, но ты меня выручил))))
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
19.04.2015, 13:39 16
Всегда пожалуйста....
0
19.04.2015, 13:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2015, 13:39
Помогаю со студенческими работами здесь

Можно ли остановить Gauge?
Можно ли остановить Gauge на 96%? Чтоб вот он взял и остановился и всё? Это же не MaxValue...

Не меняется цвет в Gauge
procedure ping(server,name:string;lab:TLabel;gaug:TGauge;icmp:TIdicmpclient); var p,p1:integer;...

Использование компонента Gauge
Есть программа вычисляющая процент схожести текстов, при вставки больших объемов текста, процесс...

Не правильное отображение в Gauge
Здравствуйте! Я применяю такую процедуру на кнопке var a,b: real; sum: real; begin...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru