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

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

Модерирует : 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

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

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаем новые возможности и баги
Просьба писать только про Delphi 2009 и выше - по остальным версиям есть соответствующая тема.
Вопросы вареза здесь не обсуждаются !!!
См. также:
Известные важные баги Delphi 2010:

Описание________________________________________________ Исправлено Решение/Альтернатива_____________________
  1. Внимание !  Деинсталляция D2010 нарушает работу D2007 и D2009 !  
При деинсталляции удаляются CC3280MT.DLL и CC3290MT.DLL из Windows\System32,   необходимые для работы D2007 и D2009 соответственно.
Сделайте резервные копии
  2. Code Formatter не работает, если не инсталлирован пакет моделирования.   В нем также присутствует множество багов. Используйте с осторожностью.   1.   JEDI CodeFormat 2.44 SVN Snapshot (~750Kb)   Требуются JCL и JVCL  
2.GExperts with Formatter
  3. Не работает F1 в Object Inspector Update 2   IDEFixPack 2.9 от Andreas Hausladen
(dev. snapshots)
  4. Если IDE начинает падать с сообщением "Out of resources", возможно, что поврежден .res файл проекта. Удалить его, запустить IDE, открыть проект - новый .res файл будет создан автоматически.
  5. В редакторе не работает Class Completion, если в декларируемом классе есть поля с шаблонами. Перед декларированием поля добавить public или private и т.д.
  6. TTrayIcon.ShowBalloonHint() не работает на ОС ниже Vista [QC 77561] Update 2 * Установить Update 2   * ИЛИ почитать о причинах и решении проблемы на форуме embarcadero и в QC   * ИЛИ воспользоваться альтернативой, например Cooltray 4.4.0
  ...      


Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 14:28 26-08-2009 | Исправлено: data man, 18:27 06-08-2010
Bonivur



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

Цитата:
функции StringElementSize - получить размер одного типичного символа данной строки;  
функции StringCodePage - получить кодовую страницу данной строки;  
процедура SetCodePage - установить кодовую страницу данной строки" (с дополнительным логическим параметром "конвертировать прямо сейчас").

С KOI-8 и 866 DOS не работают
 
Medium

Цитата:
Начиная с версии 2009 в Delphi появился класс TEncoding (в модуле SysUtils), облегчающий работу с различными кодировками. Там должно быть все, что нужно.

Аналогично. Encoding требует указания кодовой страницы. А ее еще узнать надо.
 
P.S. Решил я проблему свою. Хотя и через одно место

----------
Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 23:42 30-06-2010 | Исправлено: Bonivur, 01:46 01-07-2010
0D0A

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

Цитата:
Странно, а у меня с XPManifest наоборот размер меньше чем с включенной опцией и БЕЗ манифеста. А есть ли разница во внешнем виде на Windows 7 при использовании манифеста и при включении галки Enable themes?

Эта галка, как раз, и добавляет манифест.

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 08:25 01-07-2010 | Исправлено: 0D0A, 09:36 01-07-2010
Bonivur



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

Цитата:
Эта галка, как раз, и добавляет манифест.

Зачем тогда оставлять этот компонент (XPManifest) ??? Если уж пришлось изменять код для перехода с 7 на 2010, то галку мы бы как-нибудь сумели поставить
 
Вопрос ко всем - есть ли где почитать об изменениях с Delphi 7 до 2010? Какие компоненты добавили, что нового и.т.д.  

----------
Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 11:00 01-07-2010 | Исправлено: Bonivur, 11:01 01-07-2010
0D0A

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

Цитата:
Зачем тогда оставлять этот компонент (XPManifest) ??? Если уж пришлось изменять код для перехода с 7 на 2010, то галку мы бы как-нибудь сумели поставить :)

Его не надо добавлять. Теоритически, вобще должен выдаваться ворнинг о дублировании ресурсов. Наверно галка смотрит, что манифест уже есть и не добавляет второй раз. Вобще в висте появились дополнительные полезные поля в манифесте и разумно не ставить галку, а добавлять свой.

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 11:20 01-07-2010 | Исправлено: 0D0A, 11:21 01-07-2010
AnalogXP

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Маленькая история о манифестах:
В своей программе использую сторонний компонент ActiveX, который нужно регистрировать. Регистрировал я его через манифест файл.  
Но возникли проблемы:
В опциях IDE стояла галочка "Enable runtime themes", но я не мог понять почему под XP программа не поддерживала темы, а под Win7 были проблемы с регистрацией компонента ActiveX.  
Оказалось:
Проблема была в том, что я использовал два манифеста: тот что модуль (ресурс, та самая галочка) и тот что файл.
Убрал галочку "Enable runtime themes", и все.  
На вопрос зачем использовать отдельный манифест, был дан такой ответ:

Цитата:
чтобы разрулить правила использования манифеста в ХП и Висте. У них приоритет определения какой манифест использовать — разный. Для ХП приоритет — внешний манифест, затем внутренний, у Висты — наоборот.


Всего записей: 25 | Зарегистр. 26-08-2007 | Отправлено: 15:27 01-07-2010 | Исправлено: AnalogXP, 15:28 01-07-2010
Frodo_Torbins

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

Цитата:
Вопрос ко всем - есть ли где почитать об изменениях с Delphi 7 до 2010? Какие компоненты добавили, что нового и.т.д.

У Марко Канту неплохой цикл книжек: http://www.marcocantu.com/books/default.htm (2005 можно не читать).

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:34 01-07-2010
Bonivur



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Frodo_Torbins
Спасибо. Читал Кэнту для 6 дельфи. Не знал, что он продолжает дело.

----------
Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 20:50 01-07-2010
Bonivur



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня в Дельфи 2010 почему-то не работает Help Insight. Постоянно неактивен. Не вызывается и по шорткату Shift+Ctrl+H. Установка с нуля, полная. Сами файлы для help insight присутствуют.
 
Сам разобрался. Просто в Дистиллере включил галку Remove .NET crap. Не надо было этого делать

----------
Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 01:06 02-07-2010 | Исправлено: Bonivur, 01:20 02-07-2010
Bazzill

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

Цитата:
Похоже spasius говорил об этой демке: \Demos\DelphiWin32\VCLWin32\Doc\TextEdit но это немного не то. В демке Demos\DelphiWin32\VCLWin32\RichEdit можно на форму кинуть попапменю и назначить его ричэдиту (свойство PopupMenu). Потом в это меню добавляете несколько пунктов, для каждого выбираете нужный Action из списка.

 
Суть понятна, более подходит пример из \Demos\DelphiWin32\VCLWin32\Doc\TextEdit, а не RichEdit, так как в первом примере как-раз PopUpMenu создаются для Copy/Paste.
 
Но вылезла другая проблема.. на компоненте TMemo есть стандартное встроенное PopupMenu, причем язык пунктов меню подстраивается под язык винды: русское меню в русской, английское меню в английской винде.
 
Кто-нибудь знает как это устроено? Может это какое-то системное меню, которое можно использовать для своих целей (для RichEdit)?
 
Ведь если самому PopupMenu строить для RichEdit, то там только один язык будет.

Всего записей: 234 | Зарегистр. 18-04-2009 | Отправлено: 15:36 04-07-2010 | Исправлено: Bazzill, 15:37 04-07-2010
Frodo_Torbins

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

Цитата:
Кто-нибудь знает как это устроено? Может это какое-то системное меню, которое можно использовать для своих целей (для RichEdit)?
Да, это системное меню, но никакого апи для него нету.

Цитата:
Ведь если самому PopupMenu строить для RichEdit, то там только один язык будет.
Так у вас во всем приложении один язык.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:59 04-07-2010 | Исправлено: Frodo_Torbins, 17:39 04-07-2010
0D0A

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bazzill
Стандартного контекстного меню у RichEdit нет. Но никто не мешает взять ситемное из ресурсов (в user32.dll оно лежит) и юзать. Для слабых духом, можно просто заголовки айтемов там взять, если так волнует проблема перевода :)

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 17:18 04-07-2010 | Исправлено: 0D0A, 17:21 04-07-2010
Bazzill

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

Цитата:
Так у вас во всем приложении один язык.

 
Не везде, во всяких Попапах мессаг заголовки и прочее на родном языке винды. Open/Save диалоги например на родном языке выскакивают.
 
 
 
0D0A

Цитата:
Для слабых духом, можно просто заголовки айтемов там взять, если так волнует проблема перевода

 
А как это сделать?
 
Я что-то не уверен что смогу ковырять user32.dll

Всего записей: 234 | Зарегистр. 18-04-2009 | Отправлено: 18:40 04-07-2010
0D0A

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

Код:
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    procedure RichEdit1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure FormDestroy(Sender: TObject);
  private
    FEditMenu: HMENU;
    FEditSubMenu: HMENU;
    procedure LoadEditContextMenu;
    procedure WMCommand(var message: TWMCommand); message WM_COMMAND;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 
const
  ID_SELALL = 177;
  ID_CUT = 768;
  ID_COPY = 769;
  ID_PASTE = 770;
  ID_DELETE = 771;
  ID_UNDO = 772;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if (FEditMenu <> 0) then
    DestroyMenu(FEditMenu);
end;
 
procedure TForm1.LoadEditContextMenu;
begin
  if (FEditMenu = 0) then
  begin
    FEditMenu := LoadMenu(GetModuleHandle('user32.dll'),
      MAKEINTRESOURCE(1));
 
    if (FEditMenu <> 0) then
    begin
      FEditSubMenu := GetSubMenu(FEditMenu, 0);
 
      if (FEditSubMenu <> 0) then
      begin
        // Удаляем непонятное
        RemoveMenu(FEditSubMenu, 32769, MF_BYCOMMAND);
        RemoveMenu(FEditSubMenu, 32768, MF_BYCOMMAND);
        RemoveMenu(FEditSubMenu, 32787, MF_BYCOMMAND);
        RemoveMenu(FEditSubMenu, 8, MF_BYPOSITION);
      end;
    end;
  end;
end;
 
procedure TForm1.RichEdit1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  LoadEditContextMenu;
 
  if (FEditSubMenu <> 0) then
  begin
    Handled := True;
 
    // Тут изменяем состояние айтемов, если надо
    // EnableMenuItem(FEditSubMenu, ID_COPY, MF_GRAYED or MF_BYCOMMAND);
    // EnableMenuItem(FEditSubMenu, ID_CUT, MF_GRAYED or MF_BYCOMMAND);
    // и т.д.
 
    // Показываем
    MousePos := RichEdit1.ClientToScreen(MousePos);
    TrackPopupMenu(FEditSubMenu, TPM_LEFTALIGN or TPM_RIGHTBUTTON,
      MousePos.X, MousePos.Y, 0, Handle, nil);
  end;
end;
 
procedure TForm1.WMCommand(var message: TWMCommand);
begin
  inherited;
 
  case message.ItemID of
    ID_SELALL:
      ShowMessage('Select All');
    ID_CUT:
      ShowMessage('Cut');
    ID_COPY:
      ShowMessage('Copy');
    ID_PASTE:
      ShowMessage('Paste');
    ID_DELETE:
      ShowMessage('Delete');
    ID_UNDO:
      ShowMessage('Undo');
  end;
end;
 
end.
 

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 18:45 04-07-2010 | Исправлено: 0D0A, 18:46 04-07-2010
Bazzill

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
0D0A
 
Спасибо. Поизучаю.
 
Добавлено:
Сразу возникает вопрос, ведь меню то системное, виндовое, а мы удаляем пункты меню лишние.
 
Может быть такое, что эффект будет во всей винде и во всех программах?
 
В функции GetSystemMenu можно например указывать, получить реальное системное меню или его копию, если реальное, то алес капут придет всем программам в винде.

Всего записей: 234 | Зарегистр. 18-04-2009 | Отправлено: 22:28 04-07-2010
0D0A

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bazzill
Не надо приплетать лишнего. Мы загружаем шаблон меню из ресурса, ничего более. Впрочем обсуждение уже вышло за рамки темы

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 23:15 04-07-2010
Bazzill

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

Цитата:
Не надо приплетать лишнего. Мы загружаем шаблон меню из ресурса, ничего более. Впрочем обсуждение уже вышло за рамки темы

 
И то ладно.
 
Ну ты крут конечно, столько констант разных системных знать

Всего записей: 234 | Зарегистр. 18-04-2009 | Отправлено: 23:27 04-07-2010
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bazzill
Все эти константы видно в ResHacker-ре и ему подобных прогах редактирования ресурсов. И кстати не факт, что они не изменятся в следующей версии винды (в Win7 все ок).

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 00:17 05-07-2010
Bazzill

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
 
Пример 0D0A работает великолепно, но меня тоже терзают смутные сомнения насчет надежности такого подхода.
 
Во всяких китаезных версиях винд или других, константы могут быть совершенно левыми.
 
Но с другой стороны, сама Delphi вполне возможно похожим образом юзает эти менюшки в TMemo.
 

Всего записей: 234 | Зарегистр. 18-04-2009 | Отправлено: 01:26 05-07-2010
0D0A

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Они не меняются со своего появления в NT (в 9х это меню в user.exe). Да и зачем менять? Что проще, добавить новый ресурс или менять кучу кода, котрый с этим меню работает?

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 10:11 05-07-2010 | Исправлено: 0D0A, 10:13 05-07-2010
Bonivur



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, как сделать в компоненте CategoryButtons так, чтобы при нажатии на одну категорию остальные сворачивались (AutoCollapse типа)?

----------
Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 15:25 05-07-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru