![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Мне нужно в вывести две строчки в таблице. Количество столбцов 15.
первая строка - напряжение U, которое изменяется с каким нибудь шагом вторая строка - скорость v, которая является функцией от напряжения Нужно чтобы в серых ячейках U и v было всегда, а остальные ячейки считались по формуле v(u) ... - любая функция |
#2
|
||||
|
||||
![]() Ну так и делай как написал. Будут проблемы, тогда и задашь вопрос, что не получилось.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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
|
||||
|
||||
![]() Здесь помочь пока нечем, много неизвестных переменных, которые вы не удосужились указать - какие они и как инициализированы.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() Там неуказанные переменные только масса и заряд:
m0 и q - они переносятся из другой формы, их программа видит,проблем нет. с - скорость света.. ___________ С другой стороны можно любую функцию рассмотреть!!!Правильно ведь? Подскажите на примере хотя бы с y := x*x чтобы понять в чем ошибки,почему не выводят, а дальше я сделаю для своей функции... Спасибо заранее за любую помощь... Уже не знаю как быть, ничего не получается ![]() |
#6
|
||||
|
||||
![]() Укажи типы остальных переменных и их значения.
Для начала исправьте: Код:
StringGrid1.Cells[0, J] := FloatToStr(U); // Записывем скорость в ячейку ниже,под соответ.напряжением: StringGrid1.Cells[1, J] := FloatToStr(v); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось 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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось 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 формы.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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 изначально? Скорее всего некуда писать.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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] нужно сделать ОГРОМНОЙ, а то сложно заметить. Сори, что немного не в тему
![]() |