![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Мне нужно в вывести две строчки в таблице. Количество столбцов 15.
первая строка - напряжение U, которое изменяется с каким нибудь шагом вторая строка - скорость v, которая является функцией от напряжения Нужно чтобы в серых ячейках U и v было всегда, а остальные ячейки считались по формуле v(u) ... - любая функция |
|
#2
|
||||
|
||||
|
Ну так и делай как написал. Будут проблемы, тогда и задашь вопрос, что не получилось.
|
|
#3
|
|||
|
|||
|
Код:
// ЗАПОЛНЕНИЕ ТАБЛИЦЫ
procedure TForm3.Button3Click(Sender: TObject);
var i, j: Integer;
U,v :real;
begin
// расчет значений для графика
j:=1;
U:=0;
StringGRid1.Cells[0,0]:='Напряжение U,МВ';
U:=-c*sqrt(1-sqr(m0*c*c/(5*q*U+m0*c*c)));
StringGRid1.Cells[1,0]:='Скорость v,м/c';
Repeat
U:=U+100000;
v:=-c*sqrt(1-sqr(m0*c*c/(5*q*U+m0*c*c)));
j:=j+1;
//Записываем напряжение в ячейку:
StringGRid1.Cells[0,j]:=IntToStr(U);
//Записывем скорость в ячейку ниже,под соответ.напряжением:
StringGRid1.Cells[1,j]:= IntToStr(v);
Until j>StringGRid1.ColCount-1;
end;Последний раз редактировалось Bargest, 16.05.2012 в 23:56. |
|
#4
|
||||
|
||||
|
Здесь помочь пока нечем, много неизвестных переменных, которые вы не удосужились указать - какие они и как инициализированы.
|
|
#5
|
|||
|
|||
|
Там неуказанные переменные только масса и заряд:
m0 и q - они переносятся из другой формы, их программа видит,проблем нет. с - скорость света.. ___________ С другой стороны можно любую функцию рассмотреть!!!Правильно ведь? Подскажите на примере хотя бы с y := x*x чтобы понять в чем ошибки,почему не выводят, а дальше я сделаю для своей функции... Спасибо заранее за любую помощь... Уже не знаю как быть, ничего не получается ![]() |
|
#6
|
||||
|
||||
|
Укажи типы остальных переменных и их значения.
Для начала исправьте: Код:
StringGrid1.Cells[0, J] := FloatToStr(U);
// Записывем скорость в ячейку ниже,под соответ.напряжением:
StringGrid1.Cells[1, J] := FloatToStr(v);Последний раз редактировалось angvelem, 17.05.2012 в 00:58. |
|
#7
|
|||
|
|||
|
J:=15;
q = 1,6e-19 переносится из другой формы m0 = 9.1e-27 переносится из другой формы с=3е8 v, U - переменные для графика v - функция от U.... Вроде всё указал.. |
|
#8
|
||||
|
||||
|
Примерно так:
Код:
var
q : Single = 1.6e-19;
m0 : Single = 9.1e-27;
c : Single = 3e8;
procedure TForm2.Button2Click(Sender: TObject);
var
I, J : Integer;
U, v : Single;
begin
// расчет значений для графика
J := 1;
U := 0;
StringGrid1.Cells[0, 0] := 'Напряжение U, МВ';
U := -c * sqrt(1 - sqr(m0 * c * c / (5 * q * U + m0 * c * c)));
StringGrid1.Cells[1, 0] := 'Скорость v, м/c';
repeat
U := U + 100000;
v := -c * sqrt(1 - sqr(m0 * c * c / (5 * q * U + m0 * c * c)));
inc(J);
// Записываем напряжение в ячейку:
StringGrid1.Cells[0, J] := FloatToStr(U);
// Записывем скорость в ячейку ниже,под соответ.напряжением:
StringGrid1.Cells[1, J] := FloatToStr(v);
until J > StringGRid1.ColCount - 1;
end;а вот так, как вы хотели: Код:
var
q : Single = 1.6e-19;
m0 : Single = 9.1e-27;
c : Single = 3e8;
procedure TForm2.Button2Click(Sender: TObject);
var
I, J : Integer;
U, v : Single;
begin
// расчет значений для графика
J := 1;
U := 0;
StringGrid1.Cells[0, 1] := 'Напряжение U, МВ';
U := -c * sqrt(1 - sqr(m0 * c * c / (5 * q * U + m0 * c * c)));
StringGrid1.Cells[0, 2] := 'Скорость v, м/c';
repeat
U := U + 100000;
v := -c * sqrt(1 - sqr(m0 * c * c / (5 * q * U + m0 * c * c)));
// Записываем напряжение в ячейку:
StringGrid1.Cells[J, 1] := FloatToStr(U);
// Записывем скорость в ячейку ниже,под соответ.напряжением:
StringGrid1.Cells[J, 2] := FloatToStr(v);
inc(J);
until J > 16;//StringGRid1.ColCount - 1;
end;Последний раз редактировалось angvelem, 17.05.2012 в 02:18. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Impressive (19.05.2012)
| ||
|
#9
|
|||
|
|||
|
Сейчас попробую всё исправить, как Вы подсказали...Спасибо огромное за помощь!
|
|
#10
|
|||
|
|||
|
Сейчас таблица хорошо работает,спасибо вам большое за подсказка..
Можно еще такой вопрос.. У меня названия серых ячеек выводится после нажатие кнопки: StringGrid1.Cells[0, 0] := 'Напряжение U, МВ'; StringGrid1.Cells[1, 0] := 'Скорость v, м/c'; А как мне сделать чтобы, они(именно названия "напряжение" и "скорость" появлялись сразу,когда открываешь формы, скомпилировав программу??.. А не по нажатию кнопки. |
|
#11
|
||||
|
||||
|
Прописать эти ячейки в событии OnCreate формы.
|
|
#12
|
|||
|
|||
|
Не могу найти в событиях таблицы OnCreate ... только свойство OnClick...
А если прописываю в коде создание формы, то почему-то не получается..Сможете подсказать где ошибка в коде: Код:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart, Grids;
type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
Panel1: TPanel;
StringGrid1: TStringGrid;
Button3: TButton;
Button4: TButton;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Panel4: TPanel;
StringGrid2: TStringGrid;
Button5: TButton;
procedure OnCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
// procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
c : Single = 3e8;
massa,zariad: real;
q:byte;
implementation
uses Unit2,Unit1;
{$R *.dfm}
Procedure TForm3.OnCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0] := 'Напряжение U, МВ';
StringGrid1.Cells[0,1] := 'Скорость v, м/c';
end;Последний раз редактировалось Impressive, 19.05.2012 в 23:25. |
|
#13
|
||||
|
||||
|
Сколько ячеек у StringGrid изначально? Скорее всего некуда писать.
|
|
#14
|
|||
|
|||
|
Вроде место есть куда писать, но не получается...
ПОЛНЫЙ КОД: Код:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart, Grids;
type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
Panel1: TPanel;
StringGrid1: TStringGrid;
Button3: TButton;
Button4: TButton;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Panel4: TPanel;
StringGrid2: TStringGrid;
Button5: TButton;
procedure OnCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
c : Single = 3e8;
massa,zariad: real;
q:byte;
implementation
uses Unit2,Unit1;
{$R *.dfm}
Procedure TForm3.OnCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0] := 'Напряжение U, МВ';
StringGrid1.Cells[0,1] := 'Скорость v, м/c';
end;
// КНОПКА НАЗАД
procedure TForm3.Button1Click(Sender: TObject);
begin
Form3.Hide;
Form2.Show;
end;
// КНОПКА ВЫХОД
procedure TForm3.Button2Click(Sender: TObject);
begin
Form3.Hide;
end;
// ЗАПОЛНЕНИЕ ТАБЛИЦЫ
procedure TForm3.Button3Click(Sender: TObject);
var
I, J : Integer;
U, v : Single;
dU : Single;
begin
Q:=form1.combobox1.itemindex;
massa:= P[q].m0; // определяем массу из первой формы по выбору Combobox1
zariad:= P[q].q0; // определяем заряд из первой формы по выбору Combobox1
// расчет значений для графика
J:= 1;
StringGrid1.Cells[0,0]:='Напряжение U, МВ';
StringGrid1.Cells[0,1]:='Скорость v,10^8 м/c';
U:= 0;
StringGrid1.Cells[J,0]:=FloatToStr(U);
v:=c*sqrt(1 - sqr(massa*c*c/(5*zariad*U*1e6 + massa*c*c)))/1e8; //*1e6 т.к. МВ
StringGrid1.Cells[J,1]:= FloatToStr(v);
dU:= StrToFloat(Edit1.Text);
repeat
U:=U+dU;
v:=c*sqrt(1 - sqr(massa*c*c/(5*zariad*U*1e6 + massa*c*c)))/1e8;
// Записываем напряжение в ячейку:
StringGrid1.Cells[J+1,0]:= FloatToStr(U);
// Записывем скорость в ячейку ниже,под соответ.напряжением:
StringGrid1.Cells[J+1,1]:= FloatToStr(v);
inc(J);
until J > 151;//StringGRid1.ColCount - 1;
end;
//ОЧИСТКА ТАБЛИЦЫ
procedure TForm3.Button4Click(Sender: TObject);
var i, j :integer;
begin
with StringGRid1 do
for i:=0 to RowCount do //Заголовки строк не трогаем
for j:=0 to ColCount do //Заголовки столбцов не трогаем
Cells[j, i]:=' ';
end;
end.
Последний раз редактировалось Impressive, 19.05.2012 в 23:23. |
|
#15
|
||||
|
||||
|
Думаю, кнопку для вставки тегов [code] - [ /CODE] нужно сделать ОГРОМНОЙ, а то сложно заметить. Сори, что немного не в тему
![]() |