Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TWebBrowser нужно подменить скроллеры, или предложите свое решение проблемы! 
V
    Опции темы
B2_Russia
Дата 14.3.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Дано:

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

Попытки:
Сделал HTML все загружается.
Убрал скроллеры.
Знаю как прокрутить HTML ScrollBy(x,y)

Что не получается:
1. Узнать высоту HTML - файла чтобы сделать перемещение ползунка в соответствии с размерами HTML (тексты разные будут)
2. С отрубанием полос прокрутки пропала прокрутка колесиком (MouseWheel).
3. Как узнать в каком положении прокрутки документ находится в данный момент. ТО есть ScrollBy есть а обратной ей ф-ии нету.

Если кто знает решение, не поленитесь, подскажите! горю! ярким пламенем!

M
Girder
Одна тема - один вопрос!
Пожалуйста, не нарушайте правил форума!


Присоединённый файл ( Кол-во скачиваний: 45 )
Присоединённый файл  tr.gif 60,80 Kb
PM WWW ICQ   Вверх
Alex
Дата 14.3.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 162



Код

<STYLE>
BODY {
    SCROLLBAR-FACE-COLOR: #000080; SCROLLBAR-HIGHLIGHT-COLOR: #bcdede; SCROLLBAR-SHADOW-COLOR: #bcdede; SCROLLBAR-3DLIGHT-COLOR: #555555; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #f2f2f2; SCROLLBAR-DARKSHADOW-COLOR: #000080
}
</STYLE>



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
B2_Russia
Дата 14.3.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Нет это не выход, там, к примеру кнопки тоже градиентные обрати внимание на верхнюю кнопку, то есть у нее еще состояния есть up, over, down smile Я б так уж давно сделал
Добавлено @ 21:12
smile
PM WWW ICQ   Вверх
Alex
Дата 14.3.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 162



если там html страница, то значит это делали средствами html, это практически на верника, так, что я бы на вашем месте задал вопрос в разделе html


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
B2_Russia
Дата 14.3.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Почему я думаю что сделано это не посредством WEB/JavaScript так это потому, чтобы сделать скроллеры с такими кнопками нужен JavaScript а в страницах которые грузит приложение голый HTML!!!
Добавлено @ 21:31
Там кроме текстов и тегов типа H2, BODY, A и тп ничего нету
PM WWW ICQ   Вверх
Alex
Дата 15.3.2006, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 162



Я конечно покажусь сейчас занудой, но все же настоятельно советаю спросить в разделе html или js нельзя ли их силами добиться, того, что представлено у вас на картинке.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
B2_Russia
Дата 15.3.2006, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Да подсказали вариант, но всеже хотел бы выяснить вопрос, как это можно сделать в Delphi?
PM WWW ICQ   Вверх
Girder
Дата 15.3.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 6
Всего: 155



 Вот например... без подмены. 
Брось WebBrowser, 2 кнопочки... и подвесь обработку событий.

Короче... см. код smile
Код
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    WB: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure WBProgressChange(Sender: TObject; Progress,
      ProgressMax: Integer);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
begin
 //WB.Navigate('http://poligon.vingrad.ru/index.php?');
 WB.Navigate('http://www.mail.ru');
end;

procedure TForm1.WBProgressChange(Sender: TObject; Progress,
  ProgressMax: Integer);
begin
 if assigned(WB.Document) then
  Caption:=IHTMLDocument2(WB.Document).readyState;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,MsT:Double;
    j:Integer;
begin
 i:=Variant(WB.Document).documentElement.scrollTop;
 if i=0 then Variant(WB.Document).documentElement.scrollTop:=1;
 if (Variant(WB.Document).documentElement.scrollTop=1)or(i>0) then //или через проверку Variant(WB.Document).compatMode
  begin
  //!DOCTYPE - Oк!
   Variant(WB.Document).documentElement.scrollTop:=i;
   MsT:=Variant(WB.Document).documentElement.scrollHeight-Variant(WB.Document).documentElement.clientHeight;
   Caption:='Max_scrollTop: '+FloatToStr(MsT);
   Caption:=Caption+';'+'Cur_scrollTop: '+FloatToStr(Variant(WB.Document).documentElement.scrollTop);
   //Изменим не много scroll
   Variant(WB.Document).documentElement.style.setAttribute('scrollbar3dLightColor','red',0);
   //По перемещаем
   for j:=0 to Round(Mst) do
    begin
     Variant(WB.Document).documentElement.scrollTop:=j;
     Application.ProcessMessages;
     Sleep(5);
    end;
  end else
  begin
  //!DOCTYPE - Фу!
   MsT:=IHTMLDocument2(WB.Document).body.getAttribute('scrollHeight',0)-IHTMLDocument2(WB.Document).body.getAttribute('clientHeight',0);
   Caption:='Max_scrollTop: '+FloatToStr(MsT);
   Caption:=Caption+';'+'Cur_scrollTop: '+FloatToStr(IHTMLDocument2(WB.Document).body.getAttribute('scrollTop',0));
   //Изменим не много scroll
   IHTMLDocument2(WB.Document).body.setAttribute('scrollbar3dLightColor','red',0);
   //По перемещаем
   for j:=0 to Round(Mst) do
    begin
     IHTMLDocument2(WB.Document).body.setAttribute('scrollTop',j,0);
     Application.ProcessMessages;
     Sleep(5);
    end;   
  end;
{Другие доступны стили скролла
scrollbar3dLightColor
scrollbarArrowColor
scrollbarBaseColor
scrollbarDarkShadowColor
scrollbarFaceColor
scrollbarHighlightColor
scrollbarShadowColor
scrollbarTrackColor}
end;

end.
 


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
B2_Russia
Дата 15.3.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Блин это не катит, стили подменять это конечно хорошо, но скроллер у меня нарисованый, делать его по дизайну нужно... Там не достаточно стиль поменять, нужно самому его нарисовать.
Ну допустим я вставил WebBrowser диалог (чилд) так что он перекрывает вертикальный скроллер, и wheel работает и стандартный закрыт можно на этом диалоге рисовать свой.

НО!

Не знаю как получить высоту документа загруженного в TWB и позицию текущую, чтобы расчитать нужное положение ползунка и его размер!!!
Вот!
Если подскажете как?!!! то проблема решена!
PM WWW ICQ   Вверх
Girder
Дата 15.3.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 6
Всего: 155



Цитата(B2_Russia @ 15.3.2006, 21:55 Найти цитируемый пост)
Не знаю как получить высоту документа загруженного в TWB и позицию текущую, чтобы расчитать нужное положение ползунка и его размер!!!
Вот!
Если подскажете как?!!! то проблема решена!
Смотри код... внимательно, там енто есть... как для коректного и не старого !DOCTYPE... так и для не коректного(опущенного или старого)

PS: Даже в Caption там выводиться енти значения.



--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
B2_Russia
Дата 15.3.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



О! Буду проверять как работает!
Только я про DOCTYPE не совсем вкурсе!
Как правильно оформить страницу чтобы все было ?
PM WWW ICQ   Вверх
Girder
Дата 15.3.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 6
Всего: 155



Цитата(B2_Russia @ 15.3.2006, 22:26 Найти цитируемый пост)
Как правильно оформить страницу чтобы все было ?
Ну...
1. Одна тема... один вопрос smile
2. Енто уже не к Delphi
3. Начни от сюда http://webforus.com.ru/w/s/?id=102 ну а дальше... в соответствующий раздел на форуме smile



--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
B2_Russia
Дата 15.3.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Всеравно спасибо smile
PM WWW ICQ   Вверх
B2_Russia
Дата 15.3.2006, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Оп! Стоп! А как поймать сообщение MOUSEWHEEL на TWebBrowser?
PM WWW ICQ   Вверх
B2_Russia
Дата 18.3.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



Girder, ответь на последний вопрос плиз он тоже к этому посту относится, так как это тоже прокрутка окна и при создании полноценного скролбара без этого не обойтись!

В drkb не нашел smile


M
Girder
Нет. Так как ты нарушаеш правило...
о котором я уже два раза говорил!


Это сообщение отредактировал(а) Girder - 19.3.2006, 08:30
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.