Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #91  
Старый 18.04.2008, 19:15
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

У меня снова вопрос - как можно удалить ненужную форму?
  #92  
Старый 18.04.2008, 19:17
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Project - Remove From Project
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
  #93  
Старый 18.04.2008, 19:34
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

The Shadow Спасибо)
  #94  
Старый 18.04.2008, 20:42
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

У меня снова вопрос - нужно мне передеалть прогу из вида - 10 кнопок на 1 стринггрид в вид - 1 кнопка на 10 стринггридов.. в общем нужно что бы при нажатии на 1 кнопку заполнялись 3 стринггрида 3-мя матрицами - я это сделал - вот код: (к стати - если можно его как-то сократить, напишите плиз - ато придераются к моим огромным кодам)

Код:
procedure TForm5.Button6Click(Sender: TObject);
var i,j:integer;
begin
begin
n:=7;
m:=11;
setlength(C,n,m);
stringgrid3.RowCount:=n;
stringgrid3.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  C[i,j]:=cos(14*j+1);
  stringgrid3.Cells[j,i]:=FormatFloat('0.00',C[i,j]);
  end;
end;
begin
n:=8;
m:=15;
setlength(B,n,m);
stringgrid2.RowCount:=n;
stringgrid2.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  B[i,j]:=sin(3.2*j+4.2)+power(exp(1),tan(i));
  stringgrid2.Cells[j,i]:=FormatFloat('0.00',B[i,j]);
  end;
end;
begin
n:=12;
m:=9;
setlength(A,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  A[i,j]:=sin(j)/cos(j)+exp(cos(i));;
  stringgrid1.Cells[j,i]:=FormatFloat('0.00',A[i,j]);
  end;
end;
end;

Но проблема у меня в слудующем - нужно на 2-ю кнопку сделать, что бы поменялись определенные столбцы в до этого выведенных матрицах - тоесть еще в 3 стринггрида выводятся 3 новые матрицы (те же - но с замененным столбцами) 0 пихаю типа как выше для заполнения - не работает... вот коды для замены столбцов 3-х матриц - подскажите, пожалуйста, если не трудно...

замена столбцов в А
Код:
procedure TForm5.Button7Click(Sender: TObject);
var i,j,t:integer;
tmp:real;

begin
m:=stringgrid1.ColCount;
k:=0;
l:=8;
for i:=0 to n-1 do
  begin
  tmp:=A[i,k];
  A[i,k]:=A[i,l];
  A[i,l]:=tmp;
  end;
for t:=0 to n-1 do
for j:=0 to m-1 do
stringgrid4.Cells[j,t]:=FormatFloat('0.00',A[t,j]);
end;

замена в B
Код:
procedure TForm5.Button9Click(Sender: TObject);
var i,j,t:integer;
tmp:real;

begin
m:=stringgrid1.ColCount;
k:=2;
l:=4;
for i:=0 to n-1 do
  begin
  tmp:=B[i,k];
  B[i,k]:=B[i,l];
  B[i,l]:=tmp;
  end;
for t:=0 to n-1 do
  begin
  for j:=0 to m-1 do
    begin
    stringgrid1.Cells[j,t]:=FormatFloat('0.00',B[t,j]);
    end;
  end;
end;

замена в С
Код:
procedure TForm5.Button5Click(Sender: TObject);
var i,j,t:integer;
tmp:real;
begin
m:=stringgrid1.ColCount;
k:=0;
l:=10;
for i:=0 to n-1 do
  begin
  tmp:=C[i,k];
  C[i,k]:=C[i,l];
  C[i,l]:=tmp;
  end;
for t:=0 to n-1 do
for j:=0 to m-1 do
stringgrid1.Cells[j,t]:=FormatFloat('0.00',C[t,j]);
end;

Заранее спасибо - ато у меня уже взрыв мозга от это программы
  #95  
Старый 18.04.2008, 20:44
Farmazon Farmazon вне форума
Прохожий
 
Регистрация: 04.04.2008
Сообщения: 14
Репутация: 10
По умолчанию

обмани препода, сделай аналог булевской перменной...создай не булеву перемнную а интэжер, и назначай либо 1 либо 0 в разных ситуациях, сообтветственно и проверяй так же, типа If tram_papam=1 then ...
думаю тебя препод похвалит за сообразительность и...будет час пудрить мозги тебе гениальному что есть спец тип переменных boolean
  #96  
Старый 18.04.2008, 22:08
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Просто у меня олучается так - заполняются 3 сразу - но столбцы меняет только в той матрице, которая последней заполнилась... а как сделать что бы в 3-х меняла - это для меня загадка...
  #97  
Старый 18.04.2008, 22:16
Аватар для Zylex
Zylex Zylex вне форума
Прохожий
 
Регистрация: 06.04.2008
Адрес: Сыктывкар
Сообщения: 33
Репутация: 10
По умолчанию

Насчет сокращения кода:

Код:
var 
       cp: TComponent;   
          i: integer;   
begin   
     for i:=1 to 3 do   
     begin   
          cp := FindComponent('StringGrid'+IntToStr(i));   
          if cp <> nil then
          begin  
          
              (cp as TStringGrid).RowCount:=n;
              (cp as TStringGrid).ColCount:=m; 
              for i:=0 to n-1 do
              for j:=0 to m-1 do
              begin
                   A[i,j]:=sin(j)/cos(j)+exp(cos(i));;
                   (cp as TStringGrid).Cells[j,i]:=FormatFloat('0.00',A[i,j]);
              end;
              end;
          end;
     end;   
end; 
Это код сократит, но что думаю ты разберешся и подкорректируешь как тебе надо
__________________
Программирование - стиль жизни
  #98  
Старый 18.04.2008, 22:18
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Zylex спасибо... разберусь... ато им мои коды длинные не нравятся... а с прогой я поступил проще - на 1 кнопку все задал - главное работает
  #99  
Старый 18.04.2008, 22:39
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Много мелких недочетов.
1. В 1 м коде три лишних begin end. Ну это так к слову о сокращении размеров программы.
2. В кодах A, B, C не задан n/
3. В кодах B и C надо указывать вывод не в StringGrid1 а в соответственно StringGrid5, StringGrid6
4. К вопросу об сокращении кода - ИМХО ничего сокращать не надо.
  #100  
Старый 18.04.2008, 23:02
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Цитата:
Сообщение от MegaPiha
Много мелких недочетов.
1. В 1 м коде три лишних begin end. Ну это так к слову о сокращении размеров программы.
2. В кодах A, B, C не задан n/
3. В кодах B и C надо указывать вывод не в StringGrid1 а в соответственно StringGrid5, StringGrid6
4. К вопросу об сокращении кода - ИМХО ничего сокращать не надо.
Спасибо.. ну на счет 1 - тут даже не буду спорить - просто соглашусь - но убирать уже че-то стремно....
2 - n задана глобально - просто тут не видно
3 - То понятно - просто скопировал коды из случая, когда в 1 все выводилось
4 - Уже и я так думаю, что не надо я рад хоть это работает...

ну теперь у меня осталась 1 задача - нужно эту прогу - код ниже сохранить в файле - причем что бы можно было самому указывать к нему путь - и потом, что бы при нажатии на батон можно было открыть тот файл и считать из него в стринггрид - это вообще реально сделать? Если да - то помогите плиз, ато я толком так и не понял как просто сохранять, а им подавай что бы через обзор
вот код:
Код:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Math;

type
    TForm5 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid3: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid4: TStringGrid;
    StringGrid5: TStringGrid;
    StringGrid6: TStringGrid;
    Button6: TButton;
    Label5: TLabel;
    Label8: TLabel;
    Button10: TButton;
    Label10: TLabel;
    Label11: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label7: TLabel;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;
  Y:array of array of real;
  C:array of array of real;
  A:array of array of real;
  B:array of array of real;
  n:integer;
  m:integer;
  k:integer;
  l:integer;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
begin
Form1.Show;
Form5.Close;
end;

procedure TForm5.Button6Click(Sender: TObject);
var i,j,t:integer;
tmp:real;
begin
begin
n:=7;
m:=11;
setlength(C,n,m);
stringgrid3.RowCount:=n;
stringgrid3.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  C[i,j]:=cos(14*j+1);
  stringgrid3.Cells[j,i]:=FormatFloat('0.00',C[i,j]);
  end;
end;
begin
m:=stringgrid3.ColCount;
k:=0;
l:=10;
for i:=0 to n-1 do
  begin
  tmp:=C[i,k];
  C[i,k]:=C[i,l];
  C[i,l]:=tmp;
  end;
for t:=0 to n-1 do
for j:=0 to m-1 do
stringgrid6.Cells[j,t]:=FormatFloat('0.00',C[t,j]);
end;
begin
n:=8;
m:=15;
setlength(B,n,m);
stringgrid2.RowCount:=n;
stringgrid2.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  B[i,j]:=sin(3.2*j+4.2)+power(exp(1),tan(i));
  stringgrid2.Cells[j,i]:=FormatFloat('0.00',B[i,j]);
  end;
end;
begin
m:=stringgrid2.ColCount;
k:=2;
l:=4;
for i:=0 to n-1 do
  begin
  tmp:=B[i,k];
  B[i,k]:=B[i,l];
  B[i,l]:=tmp;
  end;
for t:=0 to n-1 do
for j:=0 to m-1 do
stringgrid5.Cells[j,t]:=FormatFloat('0.00',B[t,j]);
end;
begin
n:=12;
m:=9;
setlength(A,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  A[i,j]:=sin(j)/cos(j)+exp(cos(i));;
  stringgrid1.Cells[j,i]:=FormatFloat('0.00',A[i,j]);
  end;
end;
begin
m:=stringgrid1.ColCount;
k:=0;
l:=8;
for i:=0 to n-1 do
  begin
  tmp:=A[i,k];
  A[i,k]:=A[i,l];
  A[i,l]:=tmp;
  end;
for t:=0 to n-1 do
for j:=0 to m-1 do
stringgrid4.Cells[j,t]:=FormatFloat('0.00',A[t,j]);
end;
end;
procedure TForm5.Button10Click(Sender: TObject);
var
i,j:integer;
begin
begin
  for i:=0 to StringGrid6.ColCount-1 do
  for j:=0 to StringGrid6.RowCount-1 do
  StringGrid6.Cells[i,j]:='';
end;
begin
  for i:=0 to StringGrid5.ColCount-1 do
  for j:=0 to StringGrid5.RowCount-1 do
  StringGrid5.Cells[i,j]:='';
end;
begin
  for i:=0 to StringGrid4.ColCount-1 do
  for j:=0 to StringGrid4.RowCount-1 do
  StringGrid4.Cells[i,j]:='';
end;
begin
  for i:=0 to StringGrid3.ColCount-1 do
  for j:=0 to StringGrid3.RowCount-1 do
  StringGrid3.Cells[i,j]:='';
end;
begin
  for i:=0 to StringGrid2.ColCount-1 do
  for j:=0 to StringGrid2.RowCount-1 do
  StringGrid2.Cells[i,j]:='';
end;
begin
  for i:=0 to StringGrid1.ColCount-1 do
  for j:=0 to StringGrid1.RowCount-1 do
  StringGrid1.Cells[i,j]:='';
end;
end;
end.
Спасибо...
  #101  
Старый 19.04.2008, 02:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, все достаточно просто.
Для указания имени файjла сипользовать TSaveDialog и TOpenDialog.
Бросаешь компоненты на форму и на соотв. кнопки пишешь:

procedure Form1.btSaveClick(Sender : TObject);
begin
If SaveDialog1.Execute Then
SaveMyData(SaveDialog1.FileName);
end;

procedure Form1.btOpenClick(Sender : TObject);
begin
If OpenDialog1.Execute Then
OpenMyData(OpenDialog1.FileName);
end;

Соотв. процедуры SaveMyData и OpenMyData сохраняют данные в файл и читают их из него, принимая на вход имя файла, полученное из диалогов.

Как писать/читать свои данные разберешься?

ЗЫ. По поводу сокращения кода программы. У тебя там есть нескольуо блоков кода, выполняющих одно и тоже, но с разными компонентами. Например, очистка StringGrid. Можно оформть это как отдельную процедуру, принимающую на вход компонент, и просто вызвать ее несколько раз.

Код:
procedure ClearStringGrid(Grid : TStringGrid);
var
  I, J : Integer;
begin
  For I := 0 To Grid.ColCount-1 Do
    For J := 0 To Grid.RowCount-1 Do
      Grid.Cells[I,J] := '';
end;

соответственно, в коде надо будет просто вызвать:

Код:
procedure TForm5.Button10Click(Sender: TObject);
begin
  ClearGrid(StringGrid1);
  ClearGrid(StringGrid2);
  ClearGrid(StringGrid3);
  ClearGrid(StringGrid4);
  ClearGrid(StringGrid5);
  ClearGrid(StringGrid6);
end;
  #102  
Старый 19.04.2008, 08:43
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

lmikle большое спасибо... но у меня толком ничего и не вышло... вот бросил я на форму SaveDialog1 - ввел на баттон 2 код

Код:
procedure TForm6.Button2Click(Sender: TObject);
begin
If SaveDialog1.Execute Then
SaveMyData(SaveDialog1.FileName);
end;

И указал путь на FileName
D:\Курсовая\Курсовая - Версия 1.7\Новая папка\MyResults.txt

Что я не так сделал, не подскжите, выдает ошибку Undeclared identifier: 'SaveMyData'
  #103  
Старый 19.04.2008, 10:39
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
ну теперь у меня осталась 1 задача - нужно эту прогу - код ниже сохранить в файле - причем что бы можно было самому указывать к нему путь - и потом, что бы при нажатии на батон можно было открыть тот файл и считать из него в стринггрид - это вообще реально сделать? Если да - то помогите плиз, ато я толком так и не понял как просто сохранять, а им подавай что бы через обзор
Я так и не понял что надо. Записать в файл сам код программы? А данные из этого файла считать в StringGrid? Или все же данные массивов записать и считать?
  #104  
Старый 19.04.2008, 10:42
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Цитата:
Сообщение от MegaPiha
Я так и не понял что надо. Записать в файл сам код программы? А данные из этого файла считать в StringGrid? Или все же данные массивов записать и считать?
Не, данные стирнггрида записать в файл и потом что бы можно было их прочесть из файла и вставить обратно в стринггрид
  #105  
Старый 19.04.2008, 12:39
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Не, данные стирнггрида записать в файл и потом что бы можно было их прочесть из файла и вставить обратно в стринггрид

Сохранение stringGrid1 в файл.
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
   s :TStringlist;
   j:Integer;
   Str:String;
   posy, posx, i : Integer;

Begin
    with TSaveDialog.Create(Owner) do
    begin
       DefaultExt:='.txt';
       Filter:= 'файлы проекта|*.txt';
       if not Execute then exit;
       s:=TStringList.Create;
       s.Clear;
       for i:=0 to StringGrid1.RowCount-1 do
       begin
          Str := '' ;
          for j:=0 to StringGrid1.ColCount-1 do
              str:=str+StringGrid1.Cells[j, i]+' ';
          s.Add(Str);
       end;
       S.SaveToFile(FileName);
end;
    s.Free;
end;


Чтение данных их файла в StringGrid2
Код:
rocedure TForm1.BitBtn3Click(Sender: TObject);
var
   s :TStringlist;
   i,j, posy, posx: Integer;
   Str:String;
Begin
    with TOpenDialog.Create(Owner) do
    begin
       DefaultExt:='.txt';
       Filter:= 'файлы проекта|*.txt';
       if not Execute then exit;
       s:=TStringList.Create;
       S.LoadFromFile(FileName);
       label2.Caption:= IntToStr(S.Count);
       For posy := 1 to S.Count do
       begin
           posx := 0;
           Str := '';
           label1.Caption:= IntToStr(Length(S.Strings[posy-1]));
           For i := 1 to Length(S.Strings[posy-1]) do
           begin
              if S.Strings[posy-1][i] <> ' ' then
                  Str := Str + S.Strings[posy-1][i]
              else
              begin
                  StringGrid2.Cells[posx, posy-1] := Str;
                  Str := '';
                  inc(posx);
              end;

           end;
       end;
    end;
    StringGrid2.RowCount := posy;
    StringGrid2.ColCount := posx;
    S.Free;
end;
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter