Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
Johnnnn   (2009-01-08 19:10) [0]

В общем, писал, писал и понял что постоянно копирую одно и тоже, есть некая процедура, которую использую во всех своих программках, для того чтобы она работала, на форме должен быть Edit, (то есть его невозможно заменить переменной, это должен быть именно эдит, неважно на какой форме он будет, то что написал до этого исправлю) дак вот вопрос! Как сделать модуль в котором содержалась бы форма, которую можно былобы вызывать из «основного» модуля и как это все потом соединять вместе?

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

П.С. Объяснял старался как мог, если кто чето понял то посоветуйте что-то.


 
Zeqfreed ©   (2009-01-08 19:53) [1]

Есть большая вероятность, что процедуру нужно переписать без использования эдита непосредственно. Было бы интересно узнать, что она вообще делает с ним.

На крайний случай — добавить параметр, в котором передавать тот эдит, с которым необходимо проводить манипуляции.


 
Медвежонок Пятачок ©   (2009-01-08 20:06) [2]

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


 
Сергей М. ©   (2009-01-08 20:50) [3]

procedure НекаяПроцедура(EditКоторыйНаходитсяГдеУгодноХотьНаЛуне: TEdit);


 
MsGuns ©   (2009-01-08 22:25) [4]

Все "повторяющиеся" процедуры (функции) унифицировать, заменив в коде обращение к внешним объектам на обращения к передаваемым параметрами ссылкам. Затем все их вынести в новый юнит, хранимый в папке общего доступа. Папку указать в окружении Delphi, а сам юнит (юниты) помещать в uses интерфейсной части рабочих модулей. В эти же юниты можно выносить объявления и реализации собственных классов, т.е. как бы расширить VCL.
И настанет всеобщее счастие :)


 
sniknik ©   (2009-01-08 23:54) [5]

а может нужен свой компонент, наследник едита?
ты не стесняйся и вместо корявых описаний что тебе нужно (при признании что сам не знаешь) лучше напиши что делаешь, и что нужно (т.е. реально существующее, что можно не придумывать а описывать...). лучше проиллюстрировав кодом.


 
Johnnnn   (2009-01-09 01:58) [6]

doc:=webbrowser1.Document as IHtmlDocument2;

procedure pickpage(tagname:string);
begin
form1.edit2.text:=tagname;
for i:=0 to doc.all.tags(form1.Edit2.Text{tagname}).length do cheto sdelat
end;

без едита работать небудет.


 
Johnnnn   (2009-01-09 02:00) [7]

Сергей М. - извините, можно немного больше какогонибудь кода для примера?


 
Германн ©   (2009-01-09 02:10) [8]


> без едита работать небудет.

Не верю!
(с)


 
Johnnnn   (2009-01-09 02:11) [9]

Самое что смешное я уже спрашивал насчетэтого едита сдесь и человек все грамотно расписал, там через какойто массив было сделано вродибы, тогда можно было заменить все за пару часов посидеть поискать где писал, НЕТ БЛИН ПОЛЕНИЛСЯ, ну вот собственно и результат.


 
Johnnnn   (2009-01-09 02:20) [10]

Не верю!(с)   Да и я неверил, я пока понял что без него никак (без едита) чуть монитор неразбил от злости, потом жадность победила и решил монитор нетрогать чтоб новый непокупать.


 
Johnnnn   (2009-01-09 02:28) [11]

О кстити ато чтото много букв и все бесполезные счас код напишу:)

unit Unit1;

interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, OleCtrls, SHDocVw, mshtml;
type
 TForm1 = class(TForm)
   Button1: TButton;
   WebBrowser1: TWebBrowser;
   Memo1: TMemo;
   Edit2: TEdit;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
 doc:variant;
implementation
{$R *.dfm}
procedure pickpage(tagname:string);
var
i:integer;
begin
form1.edit2.text:=tagname;
for i:=0 to doc.all.tags(form1.Edit2.Text{tagname}).length-1 do form1.memo1.Lines.add(doc.all.tags(form1.Edit2.Text{tagname}).item(i).innertext) ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
doc:=webbrowser1.Document as IHtmlDocument2;
pickpage("TD");
end;
end.

вот, вообщем как исходя из той ситуации что - ну очень облом все переписывать! Сделать отдельный модуль с процедурой pickpage в нем?


 
Юрий Зотов ©   (2009-01-09 02:28) [12]

> Johnnnn   (09.01.09 02:00) [7]

Отвечу за Сергея.

procedure SetEditText(Edit: TEdit; Txt: string);
begin
 Edit.Text := Txt;
end;

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


 
Германн ©   (2009-01-09 02:31) [13]


> Johnnnn   (09.01.09 02:20) [10]

И всё равно не верю! Надо было тот ответ "человека" понять и тогда бы не было вопросов.


 
Johnnnn   (2009-01-09 02:44) [14]

Юрий Зотов - Thanks!
Германн - у меня оправдание есть, я проги для себя делаю никому их не даю, имею право вообщем на халтуру если че. А так да конечно нада было:) Еще нада было не начинать курить и тогда в восьмом класе мы точно зря соседу окна разбили!


 
Германн ©   (2009-01-09 02:51) [15]


> Германн - у меня оправдание есть, я проги для себя делаю
> никому их не даю, имею право вообщем на халтуру если че.
>  А так да конечно нада было:) Еще нада было не начинать
> курить и тогда в восьмом класе мы точно зря соседу окна
> разбили!
>

Оправдание, конечно слабое. Но если ты рад тем, что удовлетворился частному, то и бог с тобой.

P.S. Уж по части халтуры, уверен мне нет тут равных! Или?


 
Johnnnn   (2009-01-09 02:57) [16]

Ладно всем ответившим и откликнувшимся спасибо! Время позднее пора спать уже.


 
KilkennyCat ©   (2009-01-09 03:18) [17]


> Уж по части халтуры, уверен мне нет тут равных! Или?


Или.


 
MsGuns ©   (2009-01-09 11:39) [18]

>
procedure SetEditText(Edit: TEdit; Txt: string);
begin
Edit.Text := Txt;
end;

Если еще почитать про RTTI, то можно "что угодно" делать с достаточно большим семейством компонент, сделав процедуру куда универсальнее. Примеров огроменное множество в исходниках VCL

ЗЫ. Ремарка, естественно, для топикстартера :)


 
123-ий ©   (2009-01-09 12:15) [19]


> Или.

надо форум переименовать в halturamaster.ru



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

Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1231877090
AdMeen
2009-01-13 23:04
2009.02.22
Поиск в глубину


2-1231843476
vegarulez
2009-01-13 13:44
2009.02.22
вопрос про корректную остановку потока


2-1231636459
demon
2009-01-11 04:14
2009.02.22
Окно на поверхности


15-1230283845
vajo
2008-12-26 12:30
2009.02.22
Радиоконструктор Экон-1


2-1231518350
happynewyear
2009-01-09 19:25
2009.02.22
как корректно закрыть программу если отсоед родительский диск?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский