Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение.
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 18:07:34.900000
|
|
|
vertas
Сообщений: 14
Оценки: 0
Присоединился: 2007-11-22 19:58:36.823333
|
Нужно создать компонент TWebBrowser, после чего уничтожить старый. Тема такая: При открытии окна программы в программе уже есть компонент WebBrowser2… попользовавшись им я создаю повеху него одноименный компонент WebBrowser2 и передаю управление ему… Как уничтожить старый WebBrowser2 компонент??? ТАК НЕ ПАШЕТ (вылазит ошибка): вариант1:
WebBrowser2.Free; //уничтожать нельзя, хотя так и логично но вылезит ошибка, компонент то используется...
WebBrowser2:=TWebBrowser.Create(Form62);
TWinControl(WebBrowser2).Parent:=Form62;
WebBrowser2.Width:=406;
WebBrowser2.Height:=231;
WebBrowser2.Left:=35;
WebBrowser2.Top:=245;
WebBrowser2.OnDocumentComplete:=WebBrowser2DocumentComplete;
Вариант2:
WebBrowser2:=TWebBrowser.Create(Form62);
TWinControl(WebBrowser2).Parent:=Form62;
WebBrowser2.Width:=406;
WebBrowser2.Height:=231;
WebBrowser2.Left:=35;
WebBrowser2.Top:=245;
WebBrowser2.OnDocumentComplete:=WebBrowser2DocumentComplete;
WebBrowser2.Free;// нельзя уничтожить потому что не понятно что уничтожаем, ведь теперь 2 компонента с одним именем!?
ВОТ ТАК РАБОТАЕТ:
WebBrowser2:=TWebBrowser.Create(Form62);
TWinControl(WebBrowser2).Parent:=Form62;
WebBrowser2.Width:=406;
WebBrowser2.Height:=231;
WebBrowser2.Left:=35;
WebBrowser2.Top:=245;
WebBrowser2.OnDocumentComplete:=WebBrowser2DocumentComplete;
Да, так действительно нет ошибок, но… когда компонентов станет слишком много повиснет комп и память грузит, всетаки нужно уничтожать старые… Есть идеи??? может кто знает например через указатель как нить удалить? [>:]
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 19:40:53.030000
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
посмотри здесь: http://webfile.ru/2442332
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 19:53:50.783333
|
|
|
vertas
Сообщений: 14
Оценки: 0
Присоединился: 2007-11-22 19:58:36.823333
|
Это самый первый исходник который я посмотрел еще вчера :( у меня скачаны все исходники по делфи из интернета так что это бестолку. тут совсем другой пример, в интернете решения его нет. я немного упростил задачу, смотрите: но теперь новая проблема… если на кнопку жать много раз то уничтожится компонент только при первом нажатии, потом все снова как и раньше…
//на форме помещен компонент WebBrowser1
procedure TForm1.Button2Click(Sender: TObject);
var
wb:^TWebBrowser;//указатель
begin
New(wb);
wb^:=WebBrowser1;//теперь указатель указывает на старый компонент
WebBrowser1:=TWebBrowser.Create(Form1);//создаем новый одноименный компонент
TWinControl(WebBrowser1).Parent:=Form1;
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Left:=350;
WebBrowser1.Top:=15;
WebBrowser1.OnDocumentComplete:=WebBrowser1DocumentComplete;//передаем компоненту все полномочия старого
WebBrowser1.Navigate('www.google.ru');//загружаем страничку в компанент
wb^.Free;//уничтожаем старый компонент по указателю на него
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
ShowMessage('lol');
end;
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 19:55:29.673333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: vertas у меня скачаны все исходники по делфи из интернета так что это бестолку. Громко сказано… Чел, сначала подучи дэлфи, потом берись за использование готовых компонент.
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 20:20:01.866666
|
|
|
vertas
Сообщений: 14
Оценки: 0
Присоединился: 2007-11-22 19:58:36.823333
|
:) ухаха тут учить нечего, программа элементарная. только никак не удалить созданный компанент) если бы я не знал делфи то не написал бы этот пример. quote:
Чел, сначала подучи дэлфи, потом берись за использование готовых компонент. найди мне хоть один справочник по этому компоненту, чтобы можно было решить поставленную задачу.
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 20:31:29.680000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Ты хоть один свой компонент написал? Проблема твоя возникла из-за незнания основ языка, т.к. ты - очередной формошлёп, судя по твоему коду.
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 20:56:39.036666
|
|
|
vertas
Сообщений: 14
Оценки: 0
Присоединился: 2007-11-22 19:58:36.823333
|
не смеши в программе кода слишком много чтобы имена менять, да и то что по логике должно работать в программе не работает, куча ошибок библиотеки длл вываливает, такую я программу написал и дело не в том что она неправильная а в том что она сложная, выполняет кучу процессов одновременно. конечно если рассматривать по книге, то сначала должны удалить старый потом создать новый, но книги для кого написаны? для того кто научился только по клавиатуре барабанить. я и пишу что компоненты должны подменяться, а не в лом удаляться а потом создаваться, имена при этом должны сохраняться.
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-03 22:24:03.960000
|
|
|
vertas
Сообщений: 14
Оценки: 0
Присоединился: 2007-11-22 19:58:36.823333
|
Все, написал сам:8D Может кому потребуется… Смысл таков, уничтожаем компонент на форме и создаем динамически, после чего динамические подменяем. для того чтобы понятней было вот готовый код. на форму кидаем компонент WebBrowser1 и кнопку Button1
var
Form1: TForm1;
i: integer;
bym: boolean;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=1;
bym:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
wb: ^TWebBrowser;
begin
if bym then
begin
bym:=false;
WebBrowser1.Free;
WebBrowser1:=TWebBrowser.Create(Form1);
TWinControl(WebBrowser1).Parent:=Form1;
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Left:=35+i;
WebBrowser1.Top:=350-i;
i:=i+10;
WebBrowser1.OnDocumentComplete:=WebBrowser1DocumentComplete;
WebBrowser1.Navigate('www.google.ru');
end
else
begin
New(wb);
wb^:=WebBrowser1;
WebBrowser1:=TWebBrowser.Create(Form1);
TWinControl(WebBrowser1).Parent:=Form1;
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Left:=35+i;
WebBrowser1.Top:=350-i;
i:=i+10;
WebBrowser1.OnDocumentComplete:=WebBrowser1DocumentComplete;
WebBrowser1.Navigate('www.google.ru');
wb^.Free;
Dispose(wb);
end;
end;
А смысл всего этого? Все очень просто, это нужно чтобы удалить сессию и куки файлы (если куки удаляются после перезагрузки браузера) 8|
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2008-12-04 01:58:14.980000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Ты ламер. Книги написаны как раз для таких, как ты. Чтобы такие как ты пореже задавали такие тупые вопросы касательно того, что и когда удалять.
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-09 17:39:33.610000
|
|
|
Yugen667
Сообщений: 4
Оценки: 0
Присоединился: 2009-07-09 17:35:45.683333
|
ты сам ламер, если не можешь толково объяснить человеку!!! vertas, респект!!! весь инет перерыл, тоже нигде не было решений, пока не наткнулся на твое! ВСЕ работает еще раз респект! Желаю поменьше тебе иметь ответов таких идиотов p.s. ради сообщения не поленился зарегиться
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-14 19:33:17.710000
|
|
|
NightmareZz
Сообщений: 1087
Оценки: 0
Присоединился: 2006-10-15 11:16:16.833333
|
Топикстартер - далбаёп. Вопрос из серии "Я отрубил себе топором палец! Как его теперь приклеить?"
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-14 20:01:57.866666
|
|
|
DenCoder
Сообщений: 49
Оценки: 0
Присоединился: 2009-07-07 19:45:30.303333
|
Серьезно, присоединяюсь к мнению _SaZ_. Vertas не мешало бы 1) Delphi подучить; 2) Писать код внимательнее. Ладно, у меня тоже бывают ошибки, как и у всех. На это есть отладчик, и… если очень непонятно, что происходит - 3) Изучить немного Asm и отлаживаем asm-код. Но только не отладчиком от Borland, а берем OllyDbg! Vertas, тебе очень далеко до тех, кто писал JScript.dll, где вроде все работает, а на самом деле баг на баге. Иногда баг1 + баг2 = нормальная работа. :) Но в итоге теряем производительность…
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-28 14:10:56.730000
|
|
|
=OutlaW=
Сообщений: 382
Оценки: 0
Присоединился: 2009-01-08 17:19:13.703333
|
Не хотел создавать тему по такому глупому вопросу. В чем ошибка: responseres.Text := Idhttp1.Get('http://www.site.ru/?page='+IntToStr(Random(1000))); Почему страница не грузится рандомно? А грузится только http://www.site.ru/?page=
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-28 14:41:52.930000
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
Возможно при обращении к несуществующей странице тебя редиректит на http://www.site.ru/?page= ? Ты ведь не проверяешь есть ли такая страница. Топикстартеру: Вобщем впосне согласен что код ламерский. РТФМ итд итп. А еще бросай делфи. Зря тратишь время.
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-28 14:47:36.496666
|
|
|
=OutlaW=
Сообщений: 382
Оценки: 0
Присоединился: 2009-01-08 17:19:13.703333
|
В том то и дело что на сайте точно есть страницы с http://www.site.ru/?page=1 по http://www.site.ru/?page=1000 Значит тут нет ошибки?: Idhttp1.Get('http://www.site.ru/?page='+IntToStr(Random(1000))); ЗЫ Я уже и целочисленную переменную пробовал создавать, потом рандомить ее и преобразовывать в стринг. Эффект - тот же =(
|
|
|
RE: Ахтун! TWebBrowser в Delphi - динамическое создание и уничтожение. - 2009-07-28 14:58:51.026666
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
1) функция Random(1000) псевдослучайно генерирует одно из 1000 чисел в диапазоне от 0 до 999 2) если есть страница с page=1000, то это вовсе не значит что есть page=999, page=998 или page=521
|
|
|
|
|