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

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

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

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Mandor Sawall

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Если посмотриш на реализацию TListView в Delphi, увидеш, что там използуют
SetWindowLong(TreeView.Handle, GWL_STYLE, NewStyle);
где NewStyle = OldStyle or TVS_FULLROWSELECT.
Надеюсь, что ето поможет...

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 09:43 28-02-2008
lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скачал и установил CodeGear™ Delphi® 2007 for Win32®  Version 11.0.2804.9245.
А он запустил сервис BlackfishSQL ("C:\Program Files\CodeGear\RAD Studio\5.0\bin\BSQLServer.exe" -S="BlackfishSQL").
Кто нибуть знает что это такое? Как использовать?

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 15:21 28-02-2008
jemiko

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lavren
http://www.codegear.com/products/blackfish

Всего записей: 250 | Зарегистр. 16-04-2007 | Отправлено: 16:06 29-02-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mandor Sawall
То есть надо
SetWindowLong(TreeView.Handle, GWL_STYLE, GetWindowLong(TreeView.Handle, GWL_STYLE) or TVS_FULLROWSELECT);
?
Я точно не знаю как правильно изменить стиль элемента.
 
И еще хотел спросить. В программе открываю URL ссылку для подачи ее в библиотеку Bass. Конструкция выглядит примерно так:
 

Код:
 
            SendMessage(GetDlgItem(hLst, CTRL_EDIT_STATLINKURL), WM_GETTEXT, 255, Integer(@BufText));
            if (BufText = '') then
              begin
                Messagebox(hLst, 'Пожалуйста проверьте заполнение всех полей.', 'Предупреждение', MB_ICONWARNING);
                Exit;
              end;
 

Но это способ тупой. Проверяется только на введение каких-либо символов и если ничего пользователь не ввел, то фигу ему... Так вот хотелось бы проверять содержимое писанины в этом поле на содержимое http:// в ней. Посоветуйте или подскажите. =)

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 10:55 01-03-2008
Frodo_Torbins

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

Код:
if pos('http://', BufText)<>1 then
  ...

В любом учебнике по делфям такое есть. Но вообще ссылка может выглядеть и так: somesite.com/file.abc и будет вполне рабочей.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 17:30 01-03-2008 | Исправлено: Frodo_Torbins, 18:59 01-03-2008
vidic777



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

Цитата:
Скачал и установил CodeGear™ Delphi® 2007 for Win32®  Version 11.0.2804.9245.

Вам нада еше декабрьский апдейт установить и последнее обновление справки. Находится здесь http://forum.ru-board.com/topic.cgi?forum=35&topic=38537#1
 
Сорри за небольшой

Всего записей: 1313 | Зарегистр. 16-02-2005 | Отправлено: 17:51 01-03-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
О том, как перетаскивать файлы на форму написано достаточно, а вот о том, как перетаскивать из проги ничего путного найти не могу. В общем, нужно реализовать перетаскивание (drag-and-drop) из приложения в папку / рабочий стол. Total Commander как один из примеров

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 18:32 01-03-2008
Stizerg



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Помогите разобраться с потоком (Thread).
Ситуация такая: создается поток и выполняет вычисления паралельно с основным потоком. Все работает без ошибок за исключением одного НО - наотрез отказывается использовать весь процессор, использует два ядра по половине каждое. Если второй поток не запускать то приложение использует одно ядро на 100%. А мне нужно чтобы основной поток работал на 100% на своем ядре, второй поток соответственно на другом. SetThreadAffinityMask не помогает. Что делать?

Всего записей: 1 | Зарегистр. 05-05-2006 | Отправлено: 00:18 03-03-2008
lavren



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

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 10:53 03-03-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи, помогите разобраться. Вкратце: читаю настройки из ини файла. В комбобокс добавляю строки. После чтения настроек необходимо выделить в комбобоксе ту строчку, которую прочитали в ини файле.
Пользуюсь методом:
 

Код:
 
  CmbxNetBuf := '10';
  SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_ADDSTRING, 0, Integer(@CmbxNetBuf));
  CmbxNetBuf := '15';
  SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_ADDSTRING, 0, Integer(@CmbxNetBuf));
  CmbxNetBuf := '30';
  SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_ADDSTRING, 0, Integer(@CmbxNetBuf));
 

 
Далее выделяю требуемые данные в комбобоксе которыю прочитал в ини файле
 

Код:
 
  CheckBuffer := IniReadString(GetCurDir + 'Settings.ini', 'Options', 'TimeOut', #0);
  if CheckBuffer = '10' then SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_SETCURSEL, 0, 0);
  if CheckBuffer = '15' then SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_SETCURSEL, 1, 0);
  if CheckBuffer = '30' then SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_SETCURSEL, 2, 0);
 

 
Потом обрабатываю изменение в комбобоксе через CBN_SELCHANGE и похожим макаром сохраняю строку в ини файл...
 
Так вот этот код добавления каждой строчки в комобокс не универсален, так как есть другие настройки, где чуть ли не сотни таких строчек. Задолбаешься такой код писать...
Решил попробовать с массивом:
 

Код:
 
type
  TCBExItemInfo = record
    iImage, iIndent : integer;
    pszText : pchar;
  end;
var
  ItemInfo : array [0..7] of TCBExItemInfo =
    ((iImage:0; pszText:'50'),
     (iImage:0; pszText:'55'),
     (iImage:0; pszText:'60'),
     (iImage:0; pszText:'65'),
     (iImage:0; pszText:'70'),
     (iImage:0; pszText:'75'),
     (iImage:0; pszText:'80'),
     (iImage:0; pszText:'85'));
for i := low(ItemInfo) to high(ItemInfo) do SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_ADDSTRING, 0, Integer(ItemInfo[i].pszText));
 

Но возник вопрос. Как можно меньшим кодом выделять требуемую строчку в комбобоксе без конструкции типа
  CheckBuffer := IniReadString(GetCurDir + 'Settings.ini', 'Options', 'TimeOut', #0);
  if CheckBuffer = '10' then SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_SETCURSEL, 0, 0);
?
 
 
И еще один интересующий меня вопрос. В своей программе много перекрашиваю контролов, ну в общем и графики там многовато со всякими имэйджлистами и т.п. Заметил что после уничтожения диалога память, занимаемая программой не изменяется. Потом при открытии диалога она еще боьше сжирается. Порылся в некоторых исходниках и нашел там ImageList_Destroy DeleteObject. Ну вроде как память уменбшается при уничтожении диалога. Но вот все равно интересует, надо ли уничтожать еще и кисть если я создаю ее при каждом появлении диалога, а идентификатор этой кисти в var один и тот же (то есть к главному диалогу применена эта кисть и я опять к дочернему создаю ее при инициализации)?
 
 
Спасибо. =)

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 11:14 03-03-2008 | Исправлено: Maks150988, 11:23 03-03-2008
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
combo1.ItemIndex := combo1.Items.IndexOf(IniReadString(GetCurDir + 'Settings.ini', 'Options', 'TimeOut', #0))
на апи переведешь?

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 08:51 04-03-2008
Mandor Sawall

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Стоит попробовать две вещи:
1. Задать текст напрямо, а не через его индекс, через WM_SETTEXT (наверное, потом будеть нужно послать и CM_TEXTCHANGED).
2. Хранить в INI не стойности, а индекси; потом можно сразу отправлять в комбо через CB_SETCURSEL.
P.S. Когда говорю "наверное", или "стоит попробовать", ето означаеть, что ето только идеи и советы, а сам я не попробовал, так что вполне возможно, что я не прав.

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 10:57 04-03-2008
Maks150988



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

Код:
 
  CheckBuffer := IniReadString(GetCurDir + 'Settings.ini', 'Options', 'TimeOut', #0);
  IndCmbxFreq := SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_FINDSTRING, -1, Integer(PChar(CheckBuffer)));
  SendMessage(GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF), CB_SETCURSEL, IndCmbxFreq, 0);
 

Работает.
 
Mandor Sawall Попробую и так. =)

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 11:45 04-03-2008
Mandor Sawall

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
По моему, ваш вариант лучше (все-таки перевели на API! )
Только не понимаю, почему не запоминаете куда-то handle елемента, а всякий раз пишете GetDlgItem(hStg, CTRL_COMBOBOX_NETPREBUF)!?

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 10:08 05-03-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mandor Sawall
Да как-то привычнее чтоли СендМессадж писать везде.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 21:01 05-03-2008
RAGod

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите плиз
Надо включить отключить соеденение "Минипорт WAN (PPPoE)"
использую ntset (шереваре)
отключает нормально по
NTFirewall1.Connections.Items[3].Disconnect;
а вот включать не хочет нивкакую пишет:
 
      Project Project1.exe raised exception class EOleSysError with message 'He
           пoддepживaeтcя'. Process stopped. Use Step or Run to continue.
 
с любым другим соеденением (локальная сеть, bluetooth ..) работает без проблем, а "Минипорт WAN (PPPoE)" не в какую не хочет
 
В чём может быть проблема?
Или есть какой нибудь другой способ включить отключить соеденение "Минипорт WAN (PPPoE)" используя что нибудь другое вместо ntset

Всего записей: 13 | Зарегистр. 07-01-2006 | Отправлено: 22:01 05-03-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ммм еще вопросик есть. Наверняка многие видели (а может и делали) как во всяких эбаутах и прочее есть строка и вней выделено другим шрифтом какое-либо слово. Как так делается? Сабклассинг?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 09:42 06-03-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Да как угодно это можно реализовать.
Самое простое - поставить в ряд несколько TLabel с разными шрифтами.


----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 10:43 06-03-2008
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто не пробовал искать слово в PDF-документе? Как открыть его - знаю, смотреть - пожалуйста, а вот автоматически (из списка, например) искать слово и определять - найдено или нет - ну не получается. Должно что-то простое быть, а найти не могу.

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 10:50 06-03-2008
Andrey128

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вы руссифицируете свои приложения?
Раньше писал на Delphi 7, и использовал переводные модули (consts.pas и т.д.) бесплатно предоставленные Polaris Software. В приложениях, в которых нужен русский, я в Search Path указывал путь к русским ресурсам и все.
Сейчас перебрался на Delphi 2007, а переводных модулей нет. Что делать?

Всего записей: 410 | Зарегистр. 16-01-2003 | Отправлено: 15:00 06-03-2008
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru