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

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

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

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

   

Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Да мне вполне хватит такой прорисовки окна. =)
 
 
 
Еще такой вопрос к знатокам Делфи. Есть необходимость нарисовать кнопку сворачивания окна  в заголовке со стилем Toolwindow. Кнопка то проирисовывается, но хочется чтоб уж прорисовывалась нормально с разными темами и на разных системах.
 
http://webdrive.avtograd.ru/Download/Explorer/Download/min_button_toolwnd.rar
 
Непонятки с синхронизацией проверочных переменных для WM_NCHITTEST. В этом сообщении надо обработать наведение указателя в кнопку, но тот код, который мне удалось сделать, косячный - кнопка автоматически меняет свое нажатие через секунуду попеременно. Собственно код взял с http://www.delphikingdom.com/asp/answer.asp?IDAnswer=61614 , но там хук на окно, а хочется без этой лабуды и без сабклассинга окна через это сообщение. И еще интересует появление обычной системной всплывающей подсказки для этой кнопки. Также в XP если используется классическая тема оформления, кнопка умеьшается в размерах в 2 раза и выглядит как точка. Что можно предпринять? Спасибо.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:16 07-09-2008
zqweq

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Необходимо скопировать лист "DVD" из книги movies.xls в книгу repoert.xls, подскажите как:
 

Код:
Excel.Workbooks('d:\movies.xls').sheets.item['DVD'].copy(Before:=Excel.Workbooks('d:\report.xls').Sheets.item[1]);

Всего записей: 6 | Зарегистр. 05-09-2008 | Отправлено: 20:58 07-09-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Написано, что хук на окно можно не ставить, один фиг не работает. Вверху есть упоминание джедайских контролов, там можно взять сорсы кнопки для заголовка. Я в свое время делал так же, проверял нажатие на попадание в RECT кнопки и отрисовывал то, что надо.
 
Добавлено:
Maks150988
Подробнее...
как обычно внимательное чтение хелпа и понимание того, что происходит. В частности, насчет WM_NCLBUTTONUP - в хелпе четко написано,This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted. В нашем случае, если мы нажали левую кнопку мыши - то приложение закаптурило мышь, поэтому надо сделать так, чтобы приложение считало, что мышь не поймана им. Поэтому в  
WM_NCLBUTTONDOWN выставляем Result:=True и не передаем его дальше, окно считает, что мыши нету и прекрасно обрабатывает событие на отпускание мыши.
Так же криво был написан обработчик активации дезактивации окна. Щас вроде все отлично работает.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:31 08-09-2008 | Исправлено: ShIvADeSt, 05:44 08-09-2008
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diodio
Извини шлялся по коммандировкам...
Прилагаемый тобой кож ДОЛЖЕН обновлятся после Post; Поскольку BDE поддерживает autocommit.
Есть пару мнений
1 - ошибка совершенно в другом, например в распределении памяти.
2 - ошибка в настройке BDE, например, используеш две разные сессии.
Можешь скинуть весь проект ? Обещаю только некомерческое использование  

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 11:13 08-09-2008
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Поскажите пожалуйста можно ли программно управлять скролбаром DBGrid'a? Если да то как?
Очень надо, т.к. пишу приложение которое управляется сенсорным экраном и не особо удобно прокручивать список нажимая на скролбар. Хотелось бы сделать кнопочки "вперед" , "назад" для перемещения по списку.

Всего записей: 210 | Зарегистр. 03-03-2005 | Отправлено: 11:09 09-09-2008
BuddyQ



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного запутался в Lookup полях.
 
Описываю проблему.
 
В первой таблице хранится информация о договорах, в  том числе о валюте и курсе валюты. Во второй таблице хранится список валют. В третьей таблице хранится список курсов с привязкой к таблице валют.
 
Таблица Contract:
поля ContractId (идентификатор договора), CurrencyId (идентификатор валюты), CurrencyRateId (идентификатор курса валюты)
 
Таблица Currency:
поля CurrencyId (идентификатор валюты), CurrencyName (наименование валюты)
 
Таблица CurrencyRate:
поля CurrencyRateId (идентификатор курса валюты), CurrencyId (идентификатор валюты), CurrencyRateValue (курс валюты)
 
Используется TRxMemoryData, куда согнаны все нужные поля. То есть:
 
Объект tbmContract:
Поля
ContractId,
CurrencyId,                                    
CurrencyName  
(keyfield: CurrencyId, lookupfield: Currency.CurrencyId, result: Currency.CurrencyName)
CurrencyRateId,                
CurrencyRateValue.
(keyfield: CurrencyRateId, lookupfield: CurrencyRate.CurrencyId, result: CurrencyRate.CurrencyRateValue)
 
С CurrencyId и CurrencyName проблем нет, обычное Lookup-поле. А вот дальше непонятно... CurrencyId с одной стороны является результирующим полем, но при этом должно быть и ключевым полем для выбора валюты... Может ли такое быть? Жду советов...

Всего записей: 3 | Зарегистр. 24-08-2006 | Отправлено: 12:01 09-09-2008
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BuddyQ
Если я правильно понял твои записи, то нужно так:
 
Объект tbmContract:  
Поля  
ContractId  
CurrencyId                                    
CurrencyName  (keyfield: CurrencyId, lookupfield: Currency.CurrencyId, result: Currency.CurrencyName)  
CurrencyRateId                
CurrencyRateValue (keyfield: CurrencyRateId, lookupfield: CurrencyRate.CurrencyRateId, result: CurrencyRate.CurrencyRateValue)  
 
При это подразумевается, что CurrencyRateId в таблице CurrencyRate уникально.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 16:59 09-09-2008
BuddyQ



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я опечатался. Конечно, нужно CurrencyRate.CurrencyRateId - так и есть в программе. Вопрос с CurrencyRateId, так как для связки таблицы валют с таблицами курсов я его тоже делаю lookup-полем:
 
CurrencyRateId (keyfield: CurrencyId, lookupfield: CurrencyRate.CurrencyId, result: CurrencyRate.CurrencyRateId)
 
Но при запуске получаю ошибку "Отсутствует текущая запись". Вопрос в следующем - можно ли LookupResultField одного lookup-поля использовать как KeyField другого lookup-поля?

Всего записей: 3 | Зарегистр. 24-08-2006 | Отправлено: 18:15 09-09-2008
V1s1ter



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

Цитата:
Вопрос в следующем - можно ли LookupResultField одного lookup-поля использовать как KeyField другого lookup-поля?

Можно, но такая организация говорит о непродуманности организации БД.
В приведенном тобой фрагмете такая структура отсутствует, по крайней мере так кажется из того что ты написал, я не заметил где "LookupResultField одного lookup-поля используется как KeyField другого lookup-поля". Либо мы говорим о разных вещах.
Причем я предпологаю что Таблица CurrencyRate имеет ключ из одного поля CurrencyRateId, а не из свяски двух  CurrencyRateId и CurrencyId.
Если не разобрался  шли фрагмент текстового *.dfm, так будет более надежно.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 12:30 10-09-2008
VidelSamogO



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Граждане друзья товарищи, помогите решить задачку на паскале.
 
 
 
Untitled0.txt.pas : Подробнее...
 
Выдаёт.
 
  [Error] Unit1.pas(30): Cannot initialize local variables
  [Error] Unit1.pas(63): Type of expression must be BOOLEAN
  [Error] Unit1.pas(64): Type of expression must be BOOLEAN
  [Error] Unit1.pas(65): Type of expression must be BOOLEAN
  [Error] Unit1.pas(66): Type of expression must be BOOLEAN
  [Error] Unit1.pas(68): Type of expression must be BOOLEAN
  [Error] Unit1.pas(71): Assignment to FOR-Loop variable 'ii'
  [Error] Unit1.pas(84): There is no overloaded version of 'FloatToStr' that can be called with these arguments
  [Error] Unit1.pas(87): ';' expected but '.' found
  [Error] Unit1.pas(91): Declaration expected but end of file found
  [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
 
 
короче даны числа 1 2 3 4 5 6 7 8 9 = 100
  надо так разместить + - * / чтобы в итоге было 100
  это типа головоломка
 

Всего записей: 765 | Зарегистр. 16-08-2008 | Отправлено: 19:43 10-09-2008 | Исправлено: VidelSamogO, 20:15 10-09-2008
ranc



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

Цитата:
[Error] Unit1.pas(63): Type of expression must be BOOLEAN
  [Error] Unit1.pas(64): Type of expression must be BOOLEAN
  [Error] Unit1.pas(65): Type of expression must be BOOLEAN
  [Error] Unit1.pas(66): Type of expression must be BOOLEAN
  [Error] Unit1.pas(68): Type of expression must be BOOLEAN  

У тебя здесь операнд присвоения, а не сравнения...

Цитата:
[Error] Unit1.pas(71): Assignment to FOR-Loop variable 'ii'  

Тут же написано: у тебя уже есть цикл с переменной "ii", и ты из него опять вызывешь новый цикл с ней же.

Цитата:
[Error] Unit1.pas(84): There is no overloaded version of 'FloatToStr' that can be called with these arguments

FloatToStr - преобразование типа Float в строку, а ты подставляешь аргументом что?

Цитата:
[Error] Unit1.pas(91): Declaration expected but end of file found  

Edit1.text:=FloatToStr(s);  находится после процедуры. Проверь endы.
 

Цитата:
[Error] Unit1.pas(30): Cannot initialize local variables  

o:array of char=('+','-','*','/'); - определи как const

Всего записей: 534 | Зарегистр. 06-02-2003 | Отправлено: 20:40 10-09-2008 | Исправлено: ranc, 20:47 10-09-2008
Frodo_Torbins

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

Код:
o:array of char=('+','-','*','/');
- это должна быть константа а не переменная.

Код:
end.
- точка ставится только в конце файла, а в конце процедуры - точка с запятой.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 20:44 10-09-2008
VidelSamogO



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ranc
Frodo_Torbins
 
Спасиб, попробую.

Всего записей: 765 | Зарегистр. 16-08-2008 | Отправлено: 21:43 10-09-2008 | Исправлено: VidelSamogO, 21:51 10-09-2008
diablist



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята кто-то использовал какие-то компоненты для Плагиностроения? помогите, никак не могу понять как в визуальном плагине использовать по нескольку форм?
 
Добавлено:
Ребята кто использовал компоненты для плагиностроения?
У меня вопрос, как в визуальном плагине использовать несколько форм?

Всего записей: 898 | Зарегистр. 29-06-2002 | Отправлено: 00:40 11-09-2008
kkRiz

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

Цитата:
Ребята кто-то использовал какие-то компоненты для Плагиностроения? помогите, никак не могу понять как в визуальном плагине использовать по нескольку форм?  

 
Точно так-же как и в основной программе - создаёте набор форм и показываете\скрываете по мере необходимости начиная с момента вызова некой функции в вашем плагине из плагин-менеджера.

Всего записей: 206 | Зарегистр. 11-05-2006 | Отправлено: 09:28 11-09-2008
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу совета.
Делаю базу данных для хранения сведений о курсах повышения квалификации в которых участвуют работники компании. Не встречал ли кто-нибудь готовое решенине как сделать форму или юнит для ввода поовторяющихся событий (по принципу Outlook). То есть например событие повторяется каждый второй четверг в течение следующих 4 месяцев и т.д. В ExtSchedule есть Recurrence Appointment функциональность но она привязана к самому компоненту ExtSchedule. Я бы и купил готовый компонент если бы нашел. Пытался сам сделать но получается больно сложным (сложнее чем вся остальная программа).

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 09:57 11-09-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1 у DevExpressa есть компонент cxScheduller. Там можно реализовывать рекурсивные события.

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:31 11-09-2008
OJIR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
 
Надо написать приложение, с помощью которого можно подключиться к реестру удаленого компьтера и удалить там определенный ключ.  
 
К реестру удаленого компьютера я подключаюсь. И мне бы хотелось что бы в memo выводился список установленных программ. Как это организовать?
 
Работаю без TRegistry.  
 
Код:
 
procedure TForm1.Button2Click(Sender: TObject);
 var
  Key      : HKEY;
  SubKey   : HKEY;
  Buff_key : array[0..1024] of Char;
  DataType : DWORD;
  Size     : DWORD;
begin
 //Подключение к реестру удаленого компьютера
  RegConnectRegistry('\\Olga', HKEY_LOCAL_MACHINE, Key);
 
  try
    //Открытие ключа
    RegOpenKeyEx(Key, 'Software\Microsoft\Windows\CurrentVersion\Uninstall',
                    0, KEY_READ, SubKey)
     try
      Size := SizeOf(Buff_key);
 
      //Получение данных
      RegQueryValueEx(SubKey, 'DisplayName', nil, @DataType, @Buff_key, @Size);
 
      //Вот тут бы выводить значение Buff_key в memo
      //  ShowMessage(Buf_key);
     
    finally
      RegCloseKey(SubKey);
    end;
  finally
    RegCloseKey(Key);
  end;
end;
 
Спасибо за внимание.
 
Вопрос снят. Разобралась.

Всего записей: 52 | Зарегистр. 07-01-2008 | Отправлено: 14:58 11-09-2008 | Исправлено: OJIR, 10:27 12-09-2008
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
Спасибо за ответ. Я в спешке написал название неправильно. Я использую ExpressScheduler, но там рекурсивные события встроены в компонент а мне  нужно получить к ним выход напрямую например через отдельный диалог.  
А то придется все писать руками а уж больно не хочется. Это ведь только довольно маловажная часть программы, больше для удобства юзеров.
У меня день ушел пока я это вот написал только для одной части проблемы:

Цитата:
Procedure TRecurForm.MakeRecurrenceDaily;
var i, h: integer;
begin
     RecurrenceListBox.Clear;
     h := DaysBetween(StartDateTimePicker.Date,EndStartDateTimePicker.Date) div ComboBox1.Value;
     if not (h = 0) then
     for I := 0 to h do
    begin
      RecurrenceListBox.Items.Add(DateToStr(StartDateTimePicker.Date + ComboBox1.Value*i));
    end;
end;

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

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 15:29 11-09-2008
sergiuz1303



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
saltmi1
Извини а не пробывал в сорцы заглянуть к Девам?

Всего записей: 46 | Зарегистр. 11-06-2007 | Отправлено: 15:54 11-09-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 (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru