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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
6-1170928218
tytus
2007-02-08 12:50
2007.10.07
TWebBrowser и Java.


2-1189091338
Igor_
2007-09-06 19:08
2007.10.07
Шрифт в польской Windows XP


2-1189409379
Sonia
2007-09-10 11:29
2007.10.07
DBLookUpComboBox


5-1161757967
Vladix
2006-10-25 10:32
2007.10.07
Редактор форм


15-1189494932
TUser
2007-09-11 11:15
2007.10.07
Ищу дрова





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский