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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2011, 14:17   #1
Nikmichsch
 
Аватар для Nikmichsch
 
Регистрация: 28.01.2011
Сообщений: 9
По умолчанию Как организовать цикл ?

Не могу сообразить, можно ли в цикле, организованном в одном модуле, на каждом шаге открывать другую форму, выполнять в соответствующем ей модуле какие-то действия и возвращаться назад. Помогите понять, как это сделать.
С уваженинм. Nikmichsch.
Nikmichsch вне форума Ответить с цитированием
Старый 29.01.2011, 14:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выполнять в соответствующем ей модуле какие-то действия и возвращаться назад.
Запросто. Эти действия оформи в метод другой формы (public метод), а в цикле вызывай его
Код:
for...
 formТаСамя.ТотМетод;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.01.2011, 16:10   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Nikmichsch Посмотреть сообщение
Не могу сообразить, можно ли в цикле, организованном в одном модуле, на каждом шаге открывать другую форму, выполнять в соответствующем ей модуле какие-то действия и возвращаться назад.
Что значит открывать другую форму? Если другая форма до этого создана то действия предложенные Stilet, иначе ее нужно создать (Create), возможно передать управление (например Showmodal) или выпонить Public метод, и наверно уничтожить (Free). Не понятно для чего, но в цикле вполне возможно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.01.2011, 20:21   #4
Nikmichsch
 
Аватар для Nikmichsch
 
Регистрация: 28.01.2011
Сообщений: 9
По умолчанию

Виталий, спасибо Вам за ответ. К сожалению, я не сумел понять, как "эти действия оформить в метод другой формы (public метод)". У меня есть форма с разными нужными для моих целей компонентами и соответствующий ей модуль. Если можно, напишите подробнее, что мне нужно сделать.
Заранее благодарен.
С уважением.
Nikmichsch.

Последний раз редактировалось Nikmichsch; 30.01.2011 в 10:30.
Nikmichsch вне форума Ответить с цитированием
Старый 30.01.2011, 07:04   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Этап разработки
1.1 Порождаем формы от собственного класса с новым методом.
1.2 Пишем собственную реализацию метода для каждой формы

Этап выполнения
2.1 Сохраняем формы в массив
2.2 Назначаем метод при создании каждой формы
2.3 В цикле выполняем свой метод для каждой формы из массива

Обработка форм в цикле.zip
Sibedir вне форума Ответить с цитированием
Старый 30.01.2011, 11:05   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Nikmichsch
Например у тебя есть вторая форма с неким методом
Код:
type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
   procedure DoSome;
    { Public declarations }
  end;
Тады ее, можно использовать так
Код:
var i:integer;
begin
 for i:=0 to 10 do Form2.DoSome;
end;
Учитывая что модуль второй формы подключен в uses первой.
Поскольку я не знаю что тебе нужно я напишу просто описание метода:
Код:
procedure TForm2.DoSome;
begin
 Ну и че тут делать то?
end;
Так понятнее?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2011, 11:46   #7
Nikmichsch
 
Аватар для Nikmichsch
 
Регистрация: 28.01.2011
Сообщений: 9
По умолчанию

Виталий! Огромное спасибо Вам за ответ. Буду осваивать.
С уважением.
Nikmichsch.
Nikmichsch вне форума Ответить с цитированием
Старый 31.01.2011, 11:20   #8
Nikmichsch
 
Аватар для Nikmichsch
 
Регистрация: 28.01.2011
Сообщений: 9
По умолчанию

Виталий, спасибо Вам за подробный ответ. Но я, к моему стыду, не справился. Когда я делал так, как Вы написали, программа мне выдавала ошибку. Я Вам посылаю изначальный модуль второй формы, которую мне хочется открывать в каждом цикле.
Этот модуль прописан в разделе другой (главной) формы, где размещен цикл :

implementation
uses MVvodA;

Если не трудно, Скажите, в чём я не прав.

Заранее благодарен.
С уважением.
Nikmichsch.
Код:

unit MVvodA;

interface

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

type
  TFormAVvodD = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public

    { Public declarations }
  end;

var
  FormAVvodD: TFormAVvodD;

implementation
         uses ModOprZav;
{$R *.dfm}


procedure TFormAVvodD.Button1Click(Sender: TObject);
begin
               A2[inn,jmm] := StrToFloat(Edit3.Text) ;

                 FormAVvodD.Close;
end;

end.

Последний раз редактировалось Stilet; 05.02.2011 в 14:05.
Nikmichsch вне форума Ответить с цитированием
Старый 31.01.2011, 11:34   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Выложите еще и цикл. Без него это гадания на кофейной гуще. Ибо совершенно не понятно, что вы в итоге делаете-то.
Sibedir вне форума Ответить с цитированием
Старый 31.01.2011, 12:01   #10
Nikmichsch
 
Аватар для Nikmichsch
 
Регистрация: 28.01.2011
Сообщений: 9
По умолчанию

Это модуль, в котором я хотел организовать цикл:


Код:
unit ModOprZav;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus;

type
  TGlavnForm = class(TForm)
    GlavnMenu: TMainMenu;
    Menu1:  TMenuItem;
    Menu11: TMenuItem;
    Menu2:  TMenuItem;
    Menu21: TMenuItem;
    Menu22: TMenuItem;
    Menu23: TMenuItem;
    Menu12: TMenuItem;
    procedure Menu11Click(Sender: TObject);
    procedure Menu12Click(Sender: TObject);
    procedure Menu21Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
    GlavnForm : TGlavnForm;
  N,M,k,N1,M1,k1,inn,jmm : integer;
          A2:array of array of real;
              Na,Ma : integer;
implementation

uses MVvodDOprZav, MProvDOprZav, MVvodA;

{$R *.dfm}

procedure TGlavnForm.Menu11Click(Sender: TObject);
begin
    N := 0;
    M := 0;            // Обнуление ячеек.
    k := 0;

   FormVvodDRazm.Show;
end;

procedure TGlavnForm.Menu12Click(Sender: TObject);
begin
   FormProvDRazm.Show;
end;

procedure TGlavnForm.Menu21Click(Sender: TObject);
begin
   Na := N1;
   Ma := M1;
       SetLength(A2,Na,Ma);

      for jmm := 1 to Ma do
             for inn := 1 to Na do

            begin
      {   FormAVvodD.Edit1.Text:= IntToStr(inn);
         FormAVvodD.Edit2.Text:= IntToStr(jmm);  }

             FormAVvodD.Show;

            end;

end;

end.
С уважением.
Nikmichsch

Последний раз редактировалось Stilet; 05.02.2011 в 14:05.
Nikmichsch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как организовать цикл KAMKAM Microsoft Office Excel 29 05.07.2010 22:20
Как организовать цикл в Экселе ? vedro-compota Microsoft Office Excel 8 01.07.2010 22:42
Как организовать цикл по столбцам? TheLadyLida Microsoft Office Excel 3 12.04.2010 16:41
как организовать цикл? Aqil_f Microsoft Office Excel 3 03.06.2009 10:13