Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

Кто с чего начинает писать программу?   Найти похожие ветки 

 
Vasya.ru   (2004-07-02 23:06) [0]

Я вот первым делом леплю кнопку "Закрыть" и пишу её обработчик. А вы с чего? И ещё: Кто как называет кнопку, закрывающую приложение: "Закрыть", "Выйти" - какие еще варианты есть?


 
wnew ©   (2004-07-02 23:08) [1]

Beenden :)


 
Anatoly Podgoretsky ©   (2004-07-02 23:13) [2]

А я с сохранения проекта, кнопка может подождать.


 
ламер ©   (2004-07-02 23:13) [3]

обычно - "Uždaryti" или "Grįžti".


 
Vasya.ru   (2004-07-02 23:15) [4]

Beenden :)
Не понял...


 
Игорь Шевченко ©   (2004-07-02 23:16) [5]

Я первым делом сохраняю проект (создаю для него папку, может быть, не одну), затем меняю название формы на fMain.


 
ламер ©   (2004-07-02 23:16) [6]

а проект я всегда начинаю с создания директории для него и сохранения.


 
GuAV ©   (2004-07-02 23:29) [7]


> а проект я всегда начинаю с создания директории для него
> и сохранения.

Аналогично. Хотя можно было бы создавать в savedialoge. имхо я тоже ламер.


 
DrPass ©   (2004-07-02 23:30) [8]

А я сначала думаю, что я буду писать


 
Огромное Кулясищще ©   (2004-07-02 23:32) [9]

Exit
Ненавижу названия кнопок на русском.


 
Игорь Шевченко ©   (2004-07-02 23:35) [10]


> Ненавижу названия кнопок на русском.


Я переболел :)


 
Rouse_ ©   (2004-07-02 23:45) [11]

А я первоначально занимаюсь проектировкой, и только потом появляются на свет пресловутые begin...end


 
Baron ©   (2004-07-02 23:51) [12]

Если придет идея сначало пишу потом кидаю обычно куда попало. Часто просто в Projects. Когда пишу что нибудь что нужно писать до конца, то выковыриваю из своих кодов, нужное и линкую.
GuAV ©  (02.07.04 23:29) [7]
Наверное я тоже ламер.


 
Огромное Кулясищще ©   (2004-07-03 00:03) [13]

> Я переболел :)

Но как вы это терпите? "Копировать", "Сохранить как"? "Закрыть" вообще ужасно выглядит. "Выход" вроде не выход, а "Выйти" - это вообще приказ (а ещё есть прикол "Завершить сеанс", уж лучше "BCE, B DOS", как в старом Аладдине). ИМХО если делать русские надписи, то только ввиде link"ов.


 
Шоломицкий   (2004-07-03 00:09) [14]

Я название формы, а сохранять постоянно забываю, из-за чего бывают проблеммы(


 
Baron ©   (2004-07-03 00:14) [15]

Шоломицкий  (03.07.04 00:09) [14]
Да да, а я весь винт зафлудил.


 
Piter ©   (2004-07-03 00:15) [16]

А я вот первым делом пытаюсь в голове прокрутить как программа должна выглядить, какой функционал, иерархию классов разрабатываю. Пишу все это на листочке...


 
Шоломицкий   (2004-07-03 00:20) [17]

>  Я всегда по ходу делаю её вид, изначально с трудом представляю, как прога будет выглядеть(
И вобще я не могу ничего сделать красиво(( Хоть дизайнера нанимай.!


 
Игорь Шевченко ©   (2004-07-03 00:20) [18]

Огромное Кулясищще ©   (03.07.04 00:03)


> Но как вы это терпите?


Родной язык, знаете ли :)


 
GuAV ©   (2004-07-03 00:20) [19]


> Пишу все это на листочке...

Зачем же на листочке. Создай модуль unit Chernovik;)


 
KilkennyCat ©   (2004-07-03 00:26) [20]

а я сразу же кликаю дважды на форме, ставлю два слэша в onCreate (чтоб умный компилятор не грохнул) и считаю проект на 90% выполненным, если сразу все скомпилится и запустится. А поскольку с таким кодом оно обязательно все будет Ок, то почти все проекты у меня на 90% выполнены. После этого я его сохраняю, или не сохраняю, полагаясь на память, и иду чем-нить развлекаться, так как осталось всего 10% проекта и почти 100% времени на него.


 
Style ©   (2004-07-03 00:34) [21]


> Игорь Шевченко ©   (02.07.04 23:16) [5]
> Я первым делом сохраняю проект (создаю для него папку, может
> быть, не одну), затем меняю название формы на fMain.


Тоже самое, только главную форму я называю  Frm_main.
Юнит главной формы я называю f_main.pas;
И все последующие формы именую с приставкой Frm_, И вообще все объекты именую с приставкой которая показывает мне объектом какого класса они является.  Например для TQuery - qry_report; TButton - (btn_ok, btn_cancel) и т.д.

Юниты которые не содержат форм (константы, нити, утилиты) я именую с приставкой u_ (u_const.pas);

Обычно сразу добавляю в проект модуль с заготовками (утилитами) u_utils.pas и модуль с константами.

После создания очередной формы( не главной ), первым делом удаляю глобальную переменную указатель на саму форму (var Frm_Receptures: TFrm_Receptures;)

А не модальные формы вызываю вот так:

 ShowForm(self, TFrm_Receptures);


Ну естественно эта процедура уже есть в заранее u_utils или добавляю ее отдельно в f_main.pas


procedure ShowForm(Owner: TComponent; InstanceClass: TComponentClass);
var
 Instance: TComponent;

 function CreateForm: TForm;
  var Reference: TForm;
 begin
   Instance := TComponent(InstanceClass.NewInstance);
   TComponent(Reference) := Instance;
   try
     Instance.Create(Owner);
   except
     TForm(Reference) := nil;
     raise;
   end;
   result := Reference;
 end;

 function FormByClass(FormClass: TClass): TForm;
 var
  i: integer;
 begin
    result := nil;
    for  i := 0 to Screen.FormCount-1 do
    begin
      if Screen.Forms[i].ClassName = FormClass.ClassName then
      begin
        result := Screen.Forms[i];
        break;
      end;
    end;
 end;

begin

 if(FormByClass(InstanceClass) = nil) then
 begin
   with CreateForm do Show;
 end else
 begin
   with FormByClass(InstanceClass) do
   begin
     WindowState := wsNormal;
     Show;
   end;
 end;

end;


 
Lenor   (2004-07-03 00:49) [22]

>> Ненавижу названия кнопок на русском.
>
>
>Я переболел :)

А я еще нет :)


 
Style ©   (2004-07-03 00:50) [23]


> А я еще нет :)


LingVo - отличное лекарство ;)


 
Тимур   (2004-07-03 00:51) [24]

А я первым делом иду на delphimaster.ru и спрашиваю, спрашиваю, спрашиваю.


 
Style ©   (2004-07-03 01:05) [25]


> А я первым делом иду на delphimaster.ru и спрашиваю, спрашиваю,
> спрашиваю.


Вот это, как раз не есть хорошо!
Нужно действовать по следующей схеме:

1. Подумать
2. Help
3. Как следует подумать
4. FAQ
5. Еще сильнее подумать
6. Ya.ru, Aport, Rambler, AltaVista, Google
7. Направить все силы для того чтобы подумать
8. Delphimaster и спрашивай, спрашивай, спрашивай :)


 
Алхимик ©   (2004-07-03 01:16) [26]

Сначала иду покурить, потом наливаю кофея, потом интересуюсь что же собственно пишем.
Затем
1. Сетую начальству на хреновость компьютера.
2. Выделяю персональную папочку проекта.
3. Создаю пунктик в TeamSource.
4. Беру ручку и бумагу, чтобы расписать основные тезисы, и ничего не написав плюхаюсь за Delphi. :)
p.s. Главная форма всегда зовётся frmMain.


 
GuAV ©   (2004-07-03 01:16) [27]

KilkennyCat ©   (03.07.04 00:26) [20]
А если окажется, что OnCreate главной формы не нужно? (Имхо, может так оказаться). Тогда переделывать 90% ?


 
Игорь Шевченко ©   (2004-07-03 01:18) [28]

Style ©   (03.07.04 00:34) [21]


> Юнит главной формы я называю f_main.pas;


Я называю main.pas

Подчеркиваний в названиях не использую, так как воспринимаю их, как шум (IMHO, разумеется). Вместо них я использую "нотацию верблюда" (btnClose, btnStartReport, и т.д.), либо нотацию Паскаль в именах (первая буква заглавная).


> Юниты которые не содержат форм (константы, нити, утилиты)
> я именую с приставкой u_ (u_const.pas);


Соответственно CommonConsts (общие для всего) или ProjectConsts, SomeDomainPartConsts, и т.д.


> После создания очередной формы( не главной ), первым делом
> удаляю глобальную переменную указатель на саму форму (var
> Frm_Receptures: TFrm_Receptures;)


Почти всегда делаю то же самое, чтобы не плодить лишних строк кода, за редким исключением. Исключение составляют StayOnTop-формы, главная, и те формы, на которые гарантировано будут ссылки в других модулях.

Модальные формы стараюсь обычно начинать с префикса dlg (TdlgAbout, TdlgEditSettings) немодальные с префикса f (fInspector, fDesigner).

С созданием форм несколько иначе - почти все немодальные формы являются наследником некой абстрактной формы, чаще всего MDI (корпоративный стиль), и чаще всего должны быть показаны в единственном экземпляре, поэтому для каждой такой формы заводится дополнительный класс-контроллер, каковой в разделе инициализации юнита с формой регистрирует себя в глобальном списке контроллеров, имеет свое имя и класс создаваемой формы в качестве свойств. Поэтому поиск экземпляра нужного класса формы является задачей контроллера, и реализован в его методе ShowForm.

Примерно это выглядит так: (вместо My префикс нужной системы)
 
 TMyMDIFormClass = class of TfMyMDIForm;

 TMyMDIFormController = class
 private
   FFormName: string;
   FMyMDIFormClass: TMyMDIFormClass;
   property FormName: string read FFormName;
 public
   constructor Create (AFormClass: TMyMDIFormClass;
     const AFormName: string);
   procedure ShowForm (AOwner: TComponent); virtual;
   property MyMDIFormClass: TMyMDIFormClass
     read FMyMDIFormClass;
 end;

 TMyPrefiteredMDIFormController = class(TMyMDIFormController)
 private
   .....
 public
   constructor Create (AFormClass: TMyMDIFormClass;
     const AFormName: string; ....);
   procedure ShowForm (AOwner: TComponent); override;
 end;

 TMyChildMDIFormController = class(TMyMDIFormController)
 public
   procedure ShowForm (AOwner: TComponent); override;
 end;

 TMyMDIFormControllerList = class(THSObjectList)
 private
   function GetItems(I: Integer): TMyMDIFormController;
   property Items[I: Integer]: TMyMDIFormController read GetItems;
 public
   function Find (const AFormName: string): TMyMDIFormController;
 end;

...........
implemenation
..........
type
 TMyMDINullFormController = class(TMyMDIFormController)
 public
   constructor Create;
   procedure ShowForm (AOwner: TComponent); override;
 end;


Последний нужно для того, чтобы метод Find списка контроллеров вернул некий фиктивный объект, обладающей сходным интерфейсом, чтобы исключить проверки на nil.

В секции инициализации юнита с наследником выполняется код:

initialization
 FormControllerList.Add(TMyMDIFormController.Create (
   TfGlobalIndicators, "GlobalIndicators"));


Для чего эти хитрости - в любом месте, где мне надо вызвать такую форму, я пишу один и тот же код (формы вызываются по Action.Execute)

procedure TfrmMain.FormActionExecute(Sender: TObject);
var
 AClassName: string;
begin
 AClassName := Copy(TComponent(Sender).Name, 4,
   Length(TComponent(Sender).Name));
 FormControllerList.Find(AClassName).ShowForm (Application);
end;


Причем, один раз для всех однотипных TAction. Имя каждого TAction выглядит как actИмяКонтроллераОбеспечивающегоЗапускФормы (лучшего решения пока не нашел).

Это избавляет от необзолимости добавлять в uses те югиты, которые содержат вызываемые формы.


 
Sanek_metaller ©   (2004-07-03 01:33) [29]

Открываю Delphi->File->New->application


 
Style ©   (2004-07-03 01:35) [30]


> Игорь Шевченко ©   (03.07.04 01:18) [28]



> Подчеркиваний в названиях не использую, так как воспринимаю
> их, как шум (IMHO, разумеется).


А мне наоборот показалось, что с подчеркиваением имя становиться более читаемым, ну так и вошло в привычку.


> С созданием форм несколько иначе - почти все немодальные
> формы являются наследником некой абстрактной формы, чаще
> всего MDI (корпоративный стиль)


А я почему то MDI формами особо не увлекался. Может потому что на работе их ни кто не использовал в проектах. Корпоративный стиль :))


 
Style ©   (2004-07-03 01:36) [31]


> Открываю Delphi->File->New->application


Краткость - сестра таланта :)


 
KilkennyCat ©   (2004-07-03 01:39) [32]


> GuAV ©   (03.07.04 01:16) [27]


у меня такого еще не было :)
Но, если допустить такое, то просто к номеру версии прибавится единичка, время разработки и стоимость проекта увеличаться в два раза :)


 
GuAV ©   (2004-07-03 01:58) [33]

Кстати, авторы KOL решили сабжевый вопрос, описав ритуал создания приложения в документации :)


 
cyborg ©   (2004-07-03 09:19) [34]

Как обычно пишу:

Program ...
begin
end.

А затем сижу, думаю, чего начать писать :).


 
Рамиль ©   (2004-07-03 10:04) [35]


> [34] cyborg ©   (03.07.04 09:19)

Пишешь только на API?:)


> Я вот первым делом леплю кнопку "Закрыть" и пишу её обработчик.
> А вы с чего? И ещё: Кто как называет кнопку, закрывающую
> приложение: "Закрыть", "Выйти" - какие еще варианты есть?

Никогда не делал кнопки "Закрыть". Всегда стандартный пункт меню -
Файл -> Выход. Даже если прога с файлами не работает :)

Первым делом переименовываю главную форму в fmMain и юнит соотв. в MainForm.


 
Vasya.ru   (2004-07-03 10:14) [36]

Никогда не делал кнопки "Закрыть". Всегда стандартный пункт меню - Файл -> Выход
Тоже всегда делаю пункт меню Файл -> Выход и всегда терзаюсь вопросом: "Почему первый пункт меню всегда везде и у всех называется "Файл"?"?


 
cyborg ©   (2004-07-03 11:16) [37]


> [35] Рамиль ©   (03.07.04 10:04)

Почему только на API? Я вообще API фукции мало использую, только окно создать и сообщение вывести, остальное обычный Паскаль.


 
Knight ©   (2004-07-03 12:13) [38]

1) Начинаю с идеи и желания её реализовать.
2) Затем идёт этап осмысления, как это должно работать.
3) Выбор типов данных (стандартных или новых).
4) Если есть базы, то примерно намечается перечень таблиц и необходимых полей.
5) Первые наброски общего алгоритма или блок-схемы на бумаге.
6) Определяюсь с необходимыми модулями, формами и диалогами.
7) Примерный набор функций в которые выносятся либо наиболее часто используемые фрагменты кода, либо просто для удобочитаемости.
8) Первый запуск компилятора...

(кол-во пунктом может варьироваться в зависимости от проекта)

Основные сокращения:
MainForm (MainUnit) - главная форма;
SettingsForm (SettingsUnit) - форма настроек;
AboutForm (AboutUnit) - о программе;
... и т.п.

DM (DMUnit) - DataModule;

GlobalUnit - константы, необходимые переменные, процедуры, функции (разные, но в основном простые, типа, преобразования типов, загрузка и запись конфигурации в ini и т.п.)

Константы - ПРОПИСНЫМИ.
<название программы>Config - глобальная переменная типи record с настройками.

Panel - (TopPanel, MainPanel и т.п.)
Button = Btn - (OpenBtn, SaveBtn и т.п.)
Image = Img.

Ну и т.д... :)


 
Рамиль ©   (2004-07-03 12:31) [39]


> [37] cyborg ©   (03.07.04 11:16)

Я имел ввиду, что это сама среда пишет.


 
YurikGL ©   (2004-07-03 12:49) [40]


> > Я вот первым делом леплю кнопку "Закрыть" и пишу её обработчик.
>
> > А вы с чего? И ещё: Кто как называет кнопку, закрывающую
>
> > приложение: "Закрыть", "Выйти" - какие еще варианты есть?


Кстати, с точки зрения  эргономики (читай тупого пользователя) правильным является написание глагола на кнопе. Т.е. "зарыть" или "Выйти" а не "Выход".

Точно так же как и правильным является название кнопки "Сформировать отчет" а не просто "Отчет" т.к. по названию "Отчет" можно лишь догадываться отразит он тебе его на экране или на печать пошлет.

И еще с точки зрения пользователя все же лучше писать русские слова...



Страницы: 1 2 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.024 c
8-1084264983
Morgan128
2004-05-11 12:43
2004.07.25
HELP! Сигнатуры


3-1088586735
DelphiNew
2004-06-30 13:12
2004.07.25
проблема с TDataSet


14-1089031958
panov
2004-07-05 16:52
2004.07.25
Цифровой фотоаппарат.


3-1088583709
_serg_
2004-06-30 12:21
2004.07.25
Нахождение запросов, отдающих большой набор данных (в байтах)


3-1088538314
Studentik
2004-06-29 23:45
2004.07.25
Не могу создать индекс...