Форум: "Начинающим";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];
ВнизУзнать какой из WebBrowser вызвал процедуру Найти похожие ветки
← →
Vladimir © (2011-09-28 00:29) [0]Здравствуйте! Есть несколько экземпляров WebBrower на форме во вкладках PageControl. Действия с ним происходят одинаковые и чтобы не плодить код сделал следующее:
procedure TPWM_MainForm.WS_W1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
//переменные
var num: integer; str: string;
begin
//вытаскиваем номер браузера
str := TWebBrowser(ASender).Name;
num := StrToInt(copy(str, 5, Length(str)))
//если идет начальная загрузка или перезагрузка
if WorkState=wsLoad then begin
//если загрузилась, то
if (DownLoadFlag[num]=true)
then begin
//визуализируем
WorkStatus_PB.Position := WorkStatus_PB.Position + 1;
//если нужно, то
if RememberMe_CB.Checked then
begin
//заполняем поля
FillForm(TWebBrowser(ASender), FieldLogin[num-1],
String(Accounts[num-1].Login));
FillForm(TWebBrowser(ASender), FieldPass[num-1],
String(Accounts[num-1].Pass));
end;
//загрузка окончена
DownLoadFlag[num] := false;
//переходим к следующему окну
Work_PC.SelectNextPage(true);
end;
end;
end;
Но вот проблема... TWebBrowser(ASender).Name имеет значение "Элемент управления обозревателя Microsoft". А каким образом мне получить name именно WebBrowser? То есть WS_W1 или WS_2 и т.д.? Подскажите пожалуйста!
P.S. Использую Delphi 2009
← →
Германн © (2011-09-28 00:54) [1]
> Но вот проблема... TWebBrowser(ASender).Name имеет значение
> "Элемент управления обозревателя Microsoft". А каким образом
> мне получить name именно WebBrowser? То есть WS_W1 или WS_2
> и т.д.?
Не надо путать имена переменных со свойством TControl.Name.
В рантайме этих имён нет!
← →
Германн © (2011-09-28 01:04) [2]
> Не надо путать имена переменных со свойством TControl.Name.
Пардон. Свойство Name - это свойство TComponent. Но это не так важно.
← →
Vladimir © (2011-09-28 01:23) [3]
> Германн
А как тогда быть?
← →
Vladimir © (2011-09-28 01:24) [4]
> Германн
Спасибо)
← →
Vladimir © (2011-09-28 01:25) [5]Сделал) TComponent(ASender).Name ))) Ночью просто плохо соображается)
← →
Германн © (2011-09-28 02:01) [6]
> А как тогда быть?
>
Прочитать учебник и написать прогу самому.
Или прочитать учебник и полностью разобраться с данным кодом, найденным неизвестно где и подделать его под ваши нужды.!
Это уже на ваше усмотрение.
P.S.
Если не сможете "сдать учебное задание", то вам лучше уйти в дворники!
← →
Vladimir © (2011-09-28 02:18) [7]
> Прочитать учебник и написать прогу самому.
Так я её сам и пишу.
> Если не сможете "сдать учебное задание", то вам лучше уйти
> в дворники!
Это не тестовое задание я пишу для себя и возможно пользователей некоторых сайтов, если конечно получится сделать программу, которая все же удовлетворит пользователей.
> Или прочитать учебник и полностью разобраться с данным кодом,
> найденным неизвестно где и подделать его под ваши нужды.
> !
Всмысле найденным неизвестно где? Я его сам писал)
← →
DiamondShark © (2011-09-28 11:01) [8]
> Действия с ним происходят одинаковые и чтобы не плодить
> код сделал следующее:
Это правильный ход мысли.
> str := TWebBrowser(ASender).Name;
> num := StrToInt(copy(str, 5, Length(str)))
А это неправильный ход мысли.
У всех компонентов есть свойство Tag. Оно доступно в дизайн-тайм, и предназначено именно для хранения расширенной пользовательской информации. Так что переписываем:
// str := TWebBrowser(ASender).Name;
num := TWebBrowser(ASender).Tag; //StrToInt(copy(str, 5, Length(str)))
И получаем полную независимость от имен компонентов. Теперь у нас в коде нет паразитных зависимостей и мы можем делать всё, что угодно: рефакторить код, переименовывать компоненты, удалить их нафиг, добавить ещё сколько угодно (в том числе динамически!) и т.д., не боясь, что от какого-то изменения сломается говнокод в другом месте.
← →
Vladimir © (2011-09-28 16:20) [9]
> DiamondShark
Спасибо большое про свойство Tag я и не помнил вообще. С ним намного удобнее.
← →
DiamondShark © (2011-09-29 12:02) [10]Следующий логичный шаг -- это создать класс (наследник TWebBrowser или агрегат с TWebBrowser), инкапсулирующий всю требуху, вроде FieldLogin, Accounts и т.п.
Тогда вообще никаких индексов не надо, а достаточно будет ссылки на экземпляр, которая всегда в нужном месте доступна.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c