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

Вниз

TWebBrowser моргает при Resize   Найти похожие ветки 

 
Василий   (2007-09-06 12:34) [0]

Помогите, что делать? Моргает и всё тут. При ресайзе формы.


 
DimaBr ©   (2007-09-06 13:00) [1]

Удалено модератором


 
Василий   (2007-09-06 13:27) [2]

А куда мне обратиться с этой проблемой? Не вижу тут ничего нарушающего.


 
tesseract ©   (2007-09-06 13:35) [3]


> Помогите, что делать? Моргает и всё тут. При ресайзе формы.


doublebuffered попробуй поставь у формы.


 
Василий   (2007-09-06 13:43) [4]

FDoubleBuffered не помог. :((


 
homm ©   (2007-09-06 13:47) [5]

У всех не моргает, а у тебя моргает?
Видимо есть причины. На форме что-то такое лежит.


 
Василий   (2007-09-06 13:54) [6]

Да, TWebBroser лежит на TPageControle. Моргают картинки на странице wb.


 
Ш-К   (2007-09-06 15:01) [7]

Сделать ничего нельзя.


 
Василий   (2007-09-06 15:11) [8]

Ух. Спасибо, обрадовал! :) А я то уж испугался, что есть решение этой проблемы. :(((((


 
Черный Шаман   (2007-09-06 15:48) [9]


> Василий   (06.09.07 13:54) [6]
>
> Да, TWebBroser лежит на TPageControle. Моргают картинки
> на странице wb.
>>Василий   (06.09.07 13:43) [4]
>>FDoubleBuffered не помог. :((


А FDoubleBuffered на TPageControle?

Попробуй это(сперва лочишь, потом разлочиваешь):


procedure LockControl(c: TWinControl; bLock: Boolean);
begin
 if (c = nil) or (c.Handle = 0) then Exit;
 if bLock then
   SendMessage(c.Handle, WM_SETREDRAW, 0, 0)
 else
 begin
   SendMessage(c.Handle, WM_SETREDRAW, 1, 0);
   RedrawWindow(c.Handle, nil, 0,
     RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
 end;
end;


 
Василий   (2007-09-06 15:53) [10]


> Попробуй это(сперва лочишь, потом разлочиваешь):


На каком этапе работы программы это использовать?


 
Черный Шаман   (2007-09-06 15:55) [11]


> Василий   (06.09.07 15:53) [10]
>
>
> > Попробуй это(сперва лочишь, потом разлочиваешь):
>
>
> На каком этапе работы программы это использовать?


Перед началом изменения данных/размера лочить, после изменения разлочивать.


 
Ш-К   (2007-09-06 16:31) [12]

Что вы напрягаетесь. Все эти советы с DoubleBuffered относятся к TOLEControl. Вы его, контейнер, будите "правильно" перерисовывать.
Достучаться до внутренней реализации OleObject через методы TOLEControl вы не сможите. Если там только нет соответствуещего интерфейса. У IWebBrowser2 и всего, что с ним связано такого интерфейса нет.
Вы работаете с отдельным СОМ приложением, которое понятие не имеет о существовании каких-то там внешних TWinControl.


 
Василий   (2007-09-06 16:32) [13]

Ш-К видимо прав. :(

Не работает.


 
Lacmus ©   (2007-09-06 17:17) [14]


unit Unit51;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, OleCtrls, SHDocVw, ComCtrls;

type
 TTabSheetEx = class(TTabSheet)
   procedure CreateParams(var aCreateParams: TCreateParams); override;
 end;

 TTabSheet = class(TTabSheetEx);

 TForm51 = class(TForm)
   PageControl1: TPageControl;
   TabSheet1: TTabSheet;
   TabSheet2: TTabSheet;
   WebBrowser1: TWebBrowser;
   procedure FormShow(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form51: TForm51;

implementation

{$R *.dfm}

procedure TTabSheetEx.CreateParams(var aCreateParams: TCreateParams);
begin
 inherited CreateParams(aCreateParams);
 with aCreateParams.WindowClass do
   Style := Style and not (CS_HREDRAW or CS_VREDRAW)
end;

procedure TForm51.FormShow(Sender: TObject);
begin
 WebBrowser1.Navigate(...);
end;


 
Ш-К   (2007-09-06 18:44) [15]

Ура работает!!!
А когда я искал, мне хрен, кто помог.
Вот так, напишешь, что невозможно. И сразу ответ будет.
А если б не написал, Lacmus (мое почтение) и не соизволил бы отвечать.


 
Черный Шаман   (2007-09-06 19:54) [16]

А еще так можно

procedure TForm51.FormCreate(Sender: TObject);
begin
   SetWindowLong(TabSheet1.Handle,GWL_STYLE,GetWindowLong(TabSheet1.Handle, GWL_STYLE) and not (CS_HREDRAW or CS_VREDRAW));
end;


 
Черный Шаман   (2007-09-06 20:09) [17]

Намутил, вот так правильно
 SetClassLong(TabSheet1.Handle,GCL_STYLE, GetClassLong(TabSheet1.Handle, GCL_STYLE) and not (CS_HREDRAW or CS_VREDRAW));



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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
8-1166895180
nordic3
2006-12-23 20:33
2007.10.07
Скорость воспроизведения в Mediaplayer


15-1189000206
savyhinst
2007-09-05 17:50
2007.10.07
Linux


15-1189275380
OlegZp
2007-09-08 22:16
2007.10.07
Помогите восстановить Internet Explorer


1-1185435238
oxffff
2007-07-26 11:33
2007.10.07
Супер эффект с showmessage.


3-1180946593
interest
2007-06-04 12:43
2007.10.07
создание таблицы из выборки (mysql)