Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    GRom_V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребят ктонить может подсобить?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 00:34 03-07-2017
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom_V
    Поставь Эврику и посмотри, что она выдает при ошибке и на каких строках. Очень похоже на утечку памяти. То есть ты создаешь объекты, а не освобождаешь память, либо освобождаешь раньше, чем закрывается вкладка.
    Проверить не могу, так как не на чем.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:24 03-07-2017
    Cryogen2003



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GRom_V
    Я вот только чего не понял, а ты уверен, что надо все страницы очищать с помощью pages.clear? Разве не нужно очищать только одну страницу?

    ----------
    Холодильники мы

    Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 06:50 03-07-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom_V
    Это известный баг: https://stackoverflow.com/questions/859307/delphi-tolecontrol-puts-activecontrol-in-wrong-state
    Просто вставьте "ActiveControl := nil;" перед "PageControl1.Pages[i].Free;".

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:09 03-07-2017
    GRom_V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Это известный баг: https://stackoverflow.com/questions/859307/delphi-tolecontrol-puts-activecontrol-in-wrong-state
    Просто вставьте "ActiveControl := nil;" перед "PageControl1.Pages[i].Free;".

    НаиОгромнейшее Вам спасибо - помогло))).

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 00:40 04-07-2017
    GRom_V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Может кто нибудь подскажет как привязать кнопку "WebBrowser1.GoBack;" к активной вкладке?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 07:53 04-07-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom_V
    Что то типа (PageControl1.ActivePage.Controls[0] as TWebBrowser).GoBack.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:43 04-07-2017
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom_V

    Цитата:
    WebBrowser1

    Посмотрите в Интернете основные правила по именованию переменных и контролов. А то через неделю у вас будет головная боль, что это у меня за контрол Button44 и что он делает


    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:18 05-07-2017
    GRom_V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Что то типа (PageControl1.ActivePage.Controls[0] as TWebBrowser).GoBack.

    Еще раз спасибо!)
    Осталась чуть чуть - есть это:
     
    procedure TForm1.CreateNewTab(Title : string);
    var
       tabsheet : TTabSheet;
       WB : TWebBrowser;
    begin
       tabsheet := TTabSheet.Create(PageControl1);
       tabsheet.Visible := true;
       tabsheet.Caption := Title;
       tabsheet.PageControl := PageControl1;
       PageControl1.ActivePage := tabsheet; // Делаем новую вкладку активной
       WB := TWebBrowser.Create(self); // Создаем на ней WebBrowser
       TWinControl(WB).Parent := TabSheet;
       WB.Align := alClient; // Распахиваем его на всю вкладку
       WB.OnNewWindow2 := WebBrowser1NewWindow2; // Назначаем обработчик события OnNewWindow2
       TabSheet.Tag := Integer(WB); // Запоминаем как браузер для TabSheet, потом понадобится
    end;  
     
     
    открываем новую вкладку с браузером, вводим адрес и переходим - Не могу добиться чтобы при переходе в новой кладке по адресу, менялся заголовок. Делаю так:
     
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    begin
    Пробовал так:
    TabSheet1.PageControl.ActivePage.Caption:=TWebBrowser(PageControl1.ActivePage.Controls[0]).LocationURL; - не меняется
    Пробовал так
    PageControl1.ActivePage.Caption:= wb.LocationURL; - тут браузер не тот, я так понимаю,
    end;
    Как указать что заголовок должен меняться при загрузке именно с этого браузера (активного)?
     
     
     
    Добавлено:
    С этим разобрался... осталось чуть чуть...
     
    Добавлено:
    Ан нет... поторопился
     
    пробовал
     
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    begin
    ComboBox1.Text:= WB.LocationURL;  
    TabSheet1.PageControl.ActivePage.Caption:=TWebBrowser(PageControl1.ActivePage.Controls[0]).LocationURL;
    end;
     
    Но вылетает ошибка при запуске

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 09:00 05-07-2017 | Исправлено: GRom_V, 09:02 05-07-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вот так нет ошибки, но ComboBox1.Text: на новой вкладке соответствует 1й вкладке, а это не правильно(((
     
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    begin
    ComboBox1.Text:= webbrowser1.LocationName;
    TabSheet1.PageControl.ActivePage.Caption:=TWebBrowser(PageControl1.ActivePage.Controls[0]).LocationURL;
    end;

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 11:03 05-07-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    Почитайте вот это: Жизнь и смерть в режиме run-time. А то вы куски кода нахватали, а что они делают похоже понимаете плохо. Заведите себе переменную "ActiveBrowser: TWebBrowser", и обновляйте во время переключения вкладок. И еще вот это попробуйте в своем обработчике: "(pDisp as IWebBrowser).LocationURL".

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:41 05-07-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Frodo_Torbins

    Спасибо Вам за помощь. Обязательно почитаю...
    Остался последний момент - подскажите пожалуйста как сделать чтоб при выборе вкладки в комбобоксе отображался URL открытой вкладки? (если не трудно)..
     
    Можно конечно типа:
    procedure TForm1.PageControl1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
    ComboBox1.Text:=TabSheet1.PageControl.ActivePage.Caption;
    end;
     
    Но это не верно,т.к. если TabSheet1.Caption. будет location.Name то получится фигня...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 21:48 05-07-2017 | Исправлено: GRom V, 22:08 05-07-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В предыдущем посте у вас же есть получение URL активной вкладки.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:48 06-07-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Тупанул...  
    Спасибо Вам за потраченое время. Очень помогли...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 22:51 06-07-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите как сделать чтоб прога запускалась в режиме совместимости с WIN 7?
    Пытался прикрутить манифест, но по факту в режиме совместимости с 7 или вистой не запускалась(:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity
            type="win32"
            name="DelphiApplication"
            version="1.0.0.0"
            processorArchitecture="*"/>
      <dependency>
            <dependentAssembly>
              <assemblyIdentity
                    type="win32"
                    name="Microsoft.Windows.Common-Controls"
                    version="6.0.0.0"
                    publicKeyToken="6595b64144ccf1df"
                    language="*"
                    processorArchitecture="*"/>
            </dependentAssembly>
      </dependency>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
              <requestedPrivileges>
                    <requestedExecutionLevel
                      level="asInvoker"
                      uiAccess="false"/>
              </requestedPrivileges>
            </security>
      </trustInfo>
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
            <application>
                    <!--Windows 7-->
                    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
                    <!--Windows Vista-->
                    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
            </application>
      </compatibility>
    </assembly>

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 15:39 31-07-2017 | Исправлено: GRom V, 00:35 01-08-2017
    NeoAnomaly

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V, а в какой ОС запускал и как определил, что процесс не в режиме совместимости, и вообще для чего это делать?

    Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 09:53 01-08-2017 | Исправлено: NeoAnomaly, 09:54 01-08-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    GRom V, а в какой ОС запускал и как определил, что процесс не в режиме совместимости, и вообще для чего это делать?  

     
    Запускаю в виндовс 8...
    Сделал сплеш для инсталлятора в делфи с использованием billenium effect.
    Если я ставлю режим совместимости с вин7 руками (в свойстве экзешника) то сплешка работает как надо, но если запускаю сплеш с манифестом, но не ставлю совместимость в ручную, то нифига не отрабатывает.
     
    Добавлено:
    Как то надо чтоб проект запускался в режиме совместимости Win7, хотя бы...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 10:45 01-08-2017 | Исправлено: GRom V, 10:49 01-08-2017
    NeoAnomaly

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Как то надо чтоб проект запускался в режиме совместимости Win7, хотя бы...

    GRom V, вообще конечно не с той стороны ты заходишь к этому вопросу. Тебе бы понять почему у тебя перестаёт работать и исправить это... Какие параметры совместимости ты ставишь в свойствах экзешника? Какой эффект из billenium не работает? Знаешь ли ты, как реализован этот эффект?
     
    ЗЫ
    А вообще настройки режима совместимости для программ хранятся в реестре, либо же можно попробовать через переменную окружения __COMPAT_LAYER перед запуском процесса задать.

    Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 11:27 01-08-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    GRom V, вообще конечно не с той стороны ты заходишь к этому вопросу. Тебе бы понять почему у тебя перестаёт работать и исправить это... Какие параметры совместимости ты ставишь в свойствах экзешника? Какой эффект из billenium не работает? Знаешь ли ты, как реализован этот эффект?
     
    ЗЫ
    А вообще настройки режима совместимости для программ хранятся в реестре, либо же можно попробовать через переменную окружения __COMPAT_LAYER перед запуском процесса задать.  

     
    Если я свой файл запускаю через батник :
    set __compat_layer=WIN7RTM
    splash.exe
    То все путем, а вот с этим манифестом беда какая то.
    Как можно обойтись без батника не могу сделать, что бы в splash.exe сам запускался без помощи стороннего файла...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 15:48 01-08-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Режим совместимости в первую очередь подменят вывод GetVersionEx и прочих подобных API. Неужели из за этого либа работать перестает?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 09:57 02-08-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru