Форум: "Потрепаться";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизКто с чего начинает писать программу? Найти похожие ветки
← →
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]
> > Я вот первым делом леплю кнопку "Закрыть" и пишу её обработчик.
>
> > А вы с чего? И ещё: Кто как называет кнопку, закрывающую
>
> > приложение: "Закрыть", "Выйти" - какие еще варианты есть?
Кстати, с точки зрения эргономики (читай тупого пользователя) правильным является написание глагола на кнопе. Т.е. "зарыть" или "Выйти" а не "Выход".
Точно так же как и правильным является название кнопки "Сформировать отчет" а не просто "Отчет" т.к. по названию "Отчет" можно лишь догадываться отразит он тебе его на экране или на печать пошлет.
И еще с точки зрения пользователя все же лучше писать русские слова...
← →
Vlad Oshin © (2004-07-03 12:57) [41]с кнопки button1, на нажатие которой - основная идея
все равно же переписывать и не раз
← →
iZEN © (2004-07-03 13:05) [42]В обработчике OnFormClose нужно делать все завершающие операции по закрытию формы, а не плодить сущности в виде вторых кнопок и пункта меню (кнопка Close в правом верхнем углу формы, если кто не знает).
Зачем меню "Файл" у формы, которая не работает с файлами?
Всем читать "Интерфейс" Раскина.
← →
Delphin © (2004-07-03 14:21) [43]Всё начинается с идеии (или от задания), потом с объявлением переменных. Ну а дальше как получится :))
← →
Гаврила © (2004-07-03 14:36) [44]У меня названия форм начинаются с префикса fm.
главная форма fmMain<и далее название проекта>, чтобы не было нескольких окон одного класса в системе.
А названия модулей с формами начинаются на название формы без префикса, а заканчиваются на form.
Префиком u для модулей без форм переболел давно, теперь не ставлю.
Названия компонент - с префикса из двух-трех букв, без подчеркивания, согласен и Игорем - как то глаза режут подчеркивания
← →
iZEN © (2004-07-03 15:12) [45]Класс формы проекта - <Имя>Form (например, AbstractReportForm)
Экземпляр кнопки - <имя>Button (например, closeButton)
и т.д.
Иногда приватные поля класса обзываю с подчёркиванием спереди: _<имяПоля>.
Форматирование кода поручаю среде. В настройках среды предварительно завожу шаблоны кода, табуляция, отступы, форматы конструкций - Eclipse или NetBeans по быстрой клавише всё чудненько форматирует даже из чужого кашеобразного состояния в привычный глазу божеский вид.
← →
Aristarh © (2004-07-03 16:04) [46]Подчеркивания в Делфи не использую, считаю неудобными для набора.
Хотя сейчас в VC++ постепенно приучают к ним, типа m_Name - мембер класса.
Сокращения следующие:
fmMain main.pas
btnName - ну вы в курсе, куда же без нее.
lbName - ListBox
cbName - ComboBox
chbName - CheckBox
clbName - CheckListBox
lblName - Label
edName - Edit
rbName - RadioButton
pnlName - Panel
quName - Query
....... и т.д. и т.п.......
← →
Семен Сорокин © (2004-07-03 16:34) [47]С подчеркивания начинаю времменые переменные (обычно локальные), сокращения - один в один как у Aristarh © :), очень удобно видеть в том-же инспекторе объектов отсортированными по типам.
По поводу кнопки "Закрыть", то если и добавляется - далеко не в начале проекторования.
← →
Огромное Кулясищще © (2004-07-03 17:19) [48]>Тоже самое, только главную форму я называю Frm_main.
Юнит главной формы я называю f_main.pas;
Я называю главную форму mainForm и соответсвенно mainUnit.pas, а дальше formAbout и unitAbout.pas для примера соответсвенно.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.042 c