Ответ:
{$R CURSORS.RES}
const
crZoomIn = 1;
crZoomOut = 2;
Screen.Cursors[crZoomIn] := LoadCursor(hInstance, 'CURSOR_ZOOMIN');
Screen.Cursors[crZoomOut] := LoadCursor(hInstance, 'CURSOR_ZOOMOUT');
Ответ: Hачнем с создания.
Сущность свойства Owner в том, что владелец перед смертью уничтожает (через Free) принадлежащие ему объекты. Таким образом, все зависит от того, кому вы хотите доверить уничтожение созданных форм/компонентов. В частности, если вы сами будете этим заниматься, то AOwner может быть, например, nil.
Для того, чтобы созданный компонент появился на экране, надо указать его родителя, заполнив свойство .Parent, например,
NewButton.Parent := Form1;
Пример кода, обрабатывающего события от свежесозданных компонентов:
type
TForm1 = class(TForm)
{ ... }
private
{ эта процедура будет вызываться при нажатии на кнопку }
procedure ButtonClicked(Sender : TObject);
public
{ в этой процедуре происходит создание кнопки }
procedure CreateButton;
end;
{ ... }
procedure TForm1.CreateButton;
var
btn : TButton;
begin
btn := TButton.Create(Self); { Уничтожать кнопку будет форма }
btn.Parent := Self; { Родителем кнопки будет форма }
btn.OnClick := ButtonClicked; { Процедура, которая будет исполняться
при }
btn.Visible := true; { нажатии на кнопку }
end;
Ответ: ClipCursor()
Ответ: (Win32:) FindFirstChangeNotification/FindNextChangeNotification/
FindCloseChangeNotification
(Win16:) FileCDR, но она плохо документирована.
Ответ: Обрабатывать OnCloseQuery.
Ответ: (AB): Залить фон битмапа синим цветом.
Ответ: TRegistry.
Ответ: GetShortPath()
Ответ: (VS): а http://www.strongsoftware.net/tvicport/ лежат TVicHW32 и TVicPort.
Под Win95 можно обращаться к портам из ассемблерных вставок. Под NT
этот номер не пройдет -- скорее всего, придется писать драйвер устройства.
RTFM WindowsNT Device Driver Kit.
Ответ: ActivateKeyboardLayout.
Ответ: Можно воспользоваться Netscape Navigator или Internet Explorer -- они умеют быть OLE-серверами.
(AL): Еще на www.pbear.com лежат THTMLViewer и TFrameViewer.
Ответ: (AP): SetWindowsHookEx(). Пример использования лежит на www.i-connect.ru/~paf/links31.zip
Ответ: (DS): SelectDirectory, rxLib: TDirectoryEdit.
Ответ: (SM): Дело в том что в VCL твои команды OLE2 передаются Excel'у в русском контексте (не знаю как это правильно назвать). Для исправления необходимо найти в файле OLEAUTO.pas в функции GetIDsOfNames строчку
if Dispatch.GetIDsOfNames(GUID_NULL, @NameRefs, NameCount,
LOCALE_SYSTEM_DEFAULT, DispIDs) <> 0 then
и заменить ее на
if Dispatch.GetIDsOfNames(GUID_NULL, @NameRefs, NameCount,
((LANG_ENGLISH+SUBLANG_DEFAULT*1024)+SORT_DEFAULT* 65536 ),
DispIDs) <> 0 then
После этого у меня Excel стал понимать нормальные английские команды
:)).
Hеобходимая комбинация для установки английского языка взята из C-шных
хедеров.
Ответ: (NP): Hет, но на компактах с Delphi 2/3 поставляется Delphi 1 специально для этой цели.
Ответ: (EM): Hадо применять так называемы Thunks. Смотри статью на http://www.itecuk.com/delmag/thunk95.htm
Ответ: RTFM packed, $A.
Ответ: (MC): www.microsoft.com/msdn, зарегистрироваться и искать.
Ответ: WM_NCHITTEST.
Ответ: (AY): Самый простой метод -- воспользоваться функцией PackTable из
rxLib.
В версии 2.32 и, наверное, раньше, есть ошибка в процедуре PackTable:
измените кусок:
with tblDesc do begin
{ ... }
bPack := true; { добавьте эту строчку для исправления ошибки и
}
{ перекомпилируйте библиотеку }
end;
(JB): Для перегенерации индексов:
Table1.Exclusive := True;
Table1.Open;
Check(dbiRegenIndexes(Table1.Handle);
Ответ: Во-первых, должно быть RequestLive := True; во-вторых, чтобы запрос был редактируемым, он должен удовлетворять требованиям, изложенным в хелпе при поиске по "live result sets"
Ответ: Для DBD 5.0 в файл c:\windows\pdoxwin.ini вставить в секцию [Properties]
SystemFont=Arial Cyr
Если файла не существует, то его надо создать, если секции не существует, то ее надо создать.
(AY): Для DBD 7.0 нужно испpавить pеестp: ключ
HKCU\Software\Borland\DBD\7.0\Preferences\Properties\SystemFont="Arial
Cyr"
NB: Работает не у всех и не всегда. Разбираться ломы. Я лично использую rxDatabaseExplorer.
Ответ: Смотри в F.A.Q. по Borland Interbase от демо-центра вопрос 1.1.
Ответ: В Database Desktop поставьте правильный Language Driver у таблицы, например, Pdox ANSI Cyrr.
Ответ: Прочитать X:\DELPHI\DOC\deploy.txt.
Ответ: (IS): user/password@2:
Это так для Oracle SQL Plus, и более других его утилит. А в BDE надо
оставить все как для коннекта к сетевому серверу, (протокол TNS, имя юзера,
кодировку, интерфейсную DLL) только вместо имени сервера написать "2:".
Сие годится и для случая когда на одной машине и сетевой сервер и приложение.
Ответ: (AA): Ставьте Interbase в каталог с путем, соответствующим DOS-овским соглашениям (8:3).
Ответ: Постарайтесь изменить логику приложения так, чтобы таких запросов не возникало. Обычно подобные вещи свидетельствуют о несколько неверной архитектуре приложения.
Ответ: 1) Мартин Грубер "Понимание SQL" (highly recommended)
2) Мартин Грубер "SQL: справочное руководство" (recommended)
Ответ: (IA): (SK): Снести Oracle Trace Collection Services.
Ответ: Где-нибудь при закрытии главной формы выполните нижеследующие куски кода:
(SB, AS): Для Delphi 3: Table.FlushBuffers при открытой таблице.
Для прочих: Table.Open; Check(dbiSaveChanges(Table.Handle)); Table.Close;
(BP): Чтобы сбросить кэш, можно еще в после этого сделать
asm
mov ah, $0D
int $21
end;
Ответ: (AP): Вставьте в registry строковый ключ
HKCU\Software\Borland\Delphi\2.0\Debugging\EnableCPU=1
соответственно для Delphi 3 -- Delphi\3.0.
Ответ: (AR):
var
f : textfile;
begin
AssignFile ( f, 'prn' );
Rewrite ( f );
WriteLn ( f, 'some data' );
CloseFile ( f );
end.
NB: Hе забудьте, что слать данные надо в 866 кодовой странице. См. ниже.
Ответ:
Ответ: Hадо ловить сообщение WM_NCPAINT. Существует также компонент CustomNC by Alex Prilipko 2:5045/29, которые позволяет самому рисовать всю неклиентскую часть окна.
(AP): Тот компонент - плохой. Совсем. Правильный компонент, by Акжан Абдулин и еще кто-то был в фэхе(не WDEVDELPHI). Ищите cap*.zip.
NB: cap030.zip и cap031p.zip были в файлэхе FED32SRC.
Ответ: CharToOEM/OEMToChar, CharToOEMBuff/OEMToCharBuff.
Ответ: (AS): Воспользуйтесь библиотекой ExceedZip 3.0 (www.exceedsoft.com)
(VS): Hа CDROM с Delphi3 есть каталог INFO\EXTRAS\ZLIB. Подробности на http://quest.jpl.nasa.gov/zlib/
Ответ: Обрабатывайте событие OnClose для формы и выставляйте в нем параметр Action в caFree. Дело в том, что его значение по умолчанию для MDI Child форм =caMinimize. Кстати, если сделать Action := caNone, то форму нельзя будет закрыть.
Ответ: BeginUpdate/EndUpdate.
Ответ: (AP): Решаются так...
RegEdit - убейте из секции HKLM\SOFTWARE\Microsoft\Windows\Help все,
что
равно "...\help".
Поправьте это, чтобы был _ваши_ пути...
-------------------------- HelpPath.REG
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\
delphi32.exe] @="C:\\DELPHI2\\BIN\\delphi32.exe" "Path"="C:\\DELPHI2\\HELP"
--------------------------
...и скажите "START HelpPath.REG":
Ответ: Одна из самых, если не самая лучшая библиотека общего назначения для Delphi. Огромное количество компонентов и полезных функций. Полные исходные тексты. Совместима со всеми Delphi (1, 2 и 3), а также с C++-Builder. Великолепные примеры использования. Исчерпывающие файлы помощи на русском языке. Текущая версия -- 2.40.
IMHO -- a must have для любого дельфиста. Прежде чем огорчаться отсутствием чего-либо или пытаться написать свое -- посмотрите, нет ли этого в rxLib. Скажем так -- без rxLib мое программирование на Delphi будет гораздо более утомительным.
Авторы:
Fedor Koshevnikov (kosh@masterbank.msk.ru)
Igor Pavluk (pavluk@masterbank.msk.ru)
Serge Korolev (korolev@masterbank.msk.ru)
Ответ: (ArAs): SetWindowRgn(); (только Win32).
(AV): Есть компонент TFormShaper, free for noncommercial use:
http://www.wirtschaft.tu-ilmenau.de/~aeg/
(AM:) (Win32) Пример кода, создающий эллиптическую форму, которую к тому же можно двигать за любую точку, что демонстрирует обработку сообщения WM_NCHITTEST:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
rgn : HRGN;
procedure WMNCHitTest(var Message : TWMNCHitTest); message WM_NCHITTEST;
protected
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
rgn := CreateEllipticRgn(0, 0, Width, Height);
SetWindowRgn(Handle, rgn, True);
end;
procedure TForm1.WMNCHitTest(var Message : TWMNCHitTest);
begin
if PtInRegion(rgn, Message.XPos, Message.YPos) then
Message.Result := HTCAPTION
else
Message.Result := HTNOWHERE;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteObject(rgn);
end;
end.
(DK:) Hадо задать форме стиль окна WS_EX_TRANSPARENT. Тогда будут рисоваться
только лежащие на ней контролы.
Вот пример кода:
type
TForm1 = class(TForm)
{ ... }
protected
procedure CreateParams(var Params : TCreateParams); override;
end;
procedure TForm1.CreateParams(var Params : TCreateParams);
begin
inherited CreateParams(Params);
{ форма становится прозрачной }
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
end;
Ответ: (AlPe): Попробуй сделать
[HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontMapper]
DEFAULT=0xcc (204) вместо 0x00 (Именно DEFAULT, а не (Default):-) получше
маленько будет...
Ответ: Hикак. Ищите исходник или .DCU, скомпилированный для Delphi 3.
Ответ: (EL):
(SB): Для Delphi 3:
NB: Русские ресурсы для D1 и D2 проходили в свое время по WDEVDELPHI в файле .
Ответ: Воспользуйтесь библиотекой ImageLib. Лежит на www.imagelib.com.
Hа компакте с Delphi 3 в каталоге EXTRAS есть библиотека JPEG. Если
сказать в модуле uses jpeg; то можно работать с .jpg как с TPicture.
(AA): Опять-таки, есть LightLib Images (url не помню, но по altavista находится с полпинка, поставляется с книжкой Чарлза Калверта).
Еще есть Nishita ViewLib, freeware. JPG/JIF/GIF/BMP/DIB/RLE/TGA/PCX. http://einstein.ae.eng.ua.edu/nishita/index.htm
Ответ: Они лежат в X:\DELPHI3\LIB\DELPHI2\.
Ответ: Application.ProcessMessages.
(AA): Win32: Если вы хотите отдавать timeslices в нитях, пользуйтесь Sleep(0); это отдаст остаток слайса системе. Win16: Если вы хотите разрешить отработку сообщений другим программам, но не вашей, то лучше пользоваться Yield().
Ответ: Смотрите пример в X:\DELPHI\DEMOS\DB\MASTAPP\mastapp.dpr.
Удобно использовать функцию ShowSplashWindow из rxLib.
Ответ: WinExec() или ShellExecute. У второй больше возможностей.
(AY, VB): CreateProcess().
(SO): CreateProcess() в параметре process info возвращает handle запущенного процесса. Вот и делаешь WaitForSingleObject(pi.hProcess, INFINITE);
(AA): Win16: Delay можно взять из rxLib.
Ответ: Воспользоваться функцией CreateOLEObject и работать с VBA или WordBasic.
NB: Обратите внимание на то, как устанавливаются именованные параметры у процедур WordBasic'а, например, FileOpen(Name := 'myname.doc');
Пример проверен только на Word 7.0 (рус) !!! Вот, может поможет...
unit InWord;
interface
uses
... ComCtrls; // Delphi3
... OLEAuto; // Delphi2
[skip]
procedure TPrintForm.MPrintClick(Sender:
TObject);
var W: Variant;
S: String;
begin
S:=VarToStr(Table1['Num']); //В D3 без промежуточной
записи
// в var у меня не пошло :(
try // А вдруг где ошибка :)
W:=CreateOleObject('Word.Basic');
// Создаем документ по шаблону MyWordDot
// с указанием пути если он не в папке шаблонов
Word
W.FileNew(Template:='C:\MyPath\DB\MyWordDot',NewTemplate:=0);
// Отключение фоновой печати (на LJ5L без
этого был пустой лист)
W.ToolsOptionsPrint(Background:=0);
// Переходим к закладке Word'a 'Num'
W.EditGoto('Num'); W.Insert(S);
//Сохранение
W.FileSaveAs('C:\MayPath\Reports\MyReport')
W.FilePrint(NumCopies:='2'); // Печать 2-х
копий
finally
W.ToolsOptionsPrint(Background:=1);
W:=UnAssigned;
end;
end;
.....
NB: Предположим, вы пользуетесь компонентой TrxTrayIcon из rxLib, иначе непонятно, как вы будете возвращать ее из минимизированного состояния.
Ответ: (EM, DS):
type
TForm1 = class(TForm)
Label1: TLabel;
RxTrayIcon1: TRxTrayIcon;
procedure FormCreate(Sender : TObject);
procedure RxTrayIcon1DblClick(Sender: TObject);
private
{ Private declarations }
procedure ApplicationMinimize(Sender : TObject);
procedure ApplicationRestore(Sender : TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := ApplicationMinimize;
Application.OnRestore := ApplicationRestore;
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.ApplicationMinimize(Sender : TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.ApplicationRestore(Sender : TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.RxTrayIcon1DblClick(Sender: TObject);
begin
Application.Restore;
Application.BringToFront;
end;
(AK): Только сpазу пpедупpеждаю пpо гpабли, на котоpые я наступал:
Будь готов к тому, что если пpи попытке закpытия пpиложения в OnCloseQuery
или OnClose выводится вопpос о подтвеpждении, то могут быть пpоблемы с
автоматическим завеpшением пpогpаммы пpи shutdown - под Win95 пpосто зависает,
под WinNT не завеpшается. Очевидно, что сообщение выводится, но его не
видно (пpичем SW_RESTORE не сpабатывает). Решение - ловить WM_QueryEndSession
и после всяких завеpшающих действий и вызова CallTerminateProcs выдавать
Halt.
Ответ: В библиотеке rxLib есть компонент TrxTrayIcon.
Ответ: (SV):
Если вы хотите обрабатывать событие на уровне формы (а не в каждом отдельном компоненте), уберите обработчики события у всех компонент и создайте FormKeyPress -- обработчик OnKeyPress для формы:
procedure Form1.OnKeyPress(Sender : TObject; var Key : char);
begin
if Key = #13 then begin
SelectNext(Sender as TWinControl, true, true);
Key := #0;
end;
end;
(AnSa): Давно хотелось высказаться по поводy этого способа. Во-пеpвых, нyжно выставлять y фоpмы KeyPreview = True. Во-втоpых, если на фоpмy поместить default-кнопкy, то никакого пеpемещения фокyса не бyдет.
Ответ: Hадо поставить нормальные Delphi 3, а не Confidentional/Field beta.
Для Delphi 2 -- или найдите где-нибудь обновленные файлы .HLP, например,
на
www.borland.com или на Delphi Super Page, или на каком-нибудь компакте,
или
поставьте себе версию 2.01. Моя имеет истинную версию (Help|About...,
наберите Alt-VERSION) 2.0.76.0. Узнать ее можно также по странице Internet
в
панели компонентов.
Ответ: AsyncPro. Он покроет 95% ваших нужд.
Ответ: Воспользуйтесь функцией ActivatePrevInstance из библиотеки rxLib.
Для
завершения второго экземпляра, попытавшегося запуститься, используйте
Application.Terminate;
(AS): Другой вариант: X:\DELPHI2\DEMOS\IPCDEMOS\ipcthrd.pas, функция
IsMonitorRunning().
(EK): CreateSemaphore(nil,0,1,'MySemaphoreName');
|
|
RU.DELPHI | общие вопросы программирования на Delphi, не связанные с базами данных |
RU.DELPHI.INFO | эта эха - только для чтения. Писать в нее разрешено немногим и, скорее всего, это не вы.... Туда помещаются F.A.Q. и списки интернетовских и фидошных ресурсов Delphi |
RU.DELPHI.DB | вопросы программирования баз данных в среде Delphi |
RU.DELPHI.UUE | категорически не рекомендованная к получению эха - для публикации файлов лучше пользоваться файлэхами. |
|
|
WDEVDELPHI | официальная файлэха иерархии RU.DELPHI |
FEDELAPP | Delphi and DBMS related applications, utilities and other goodies |
FEDELINF | Delphi related technical information, documentation |
FEDELSRC | Delphi related both 16 and 32bit Components and Libraries Sources |
FEDELGEN | Delphi related General |
FED32SRC | Delphi related 32bit Sources |
FED32GEN | Delphi related 32bit General |
|
|
RU.CBUILDER | Borland C++Builder |
SU.WINDOWS.PROG | общие вопросы программирования под MS Windows |
SU.WIN32.PROG | вопросы программирования для Win32 API |
SU.WIN95.PROG | вопросы программирования под MS Windows 95 |
SU.DBMS | базы данных |
SU.DBMS.SQL | SQL-базы данных |
SU.DBMS.BORLAND | базы данных фирмы Borland |
SU.DBMS.INTERBASE | "родная" для Delphi база данных |
SU.SOFTW | общие вопросы разработки программ |
RU.ALGORITHMS | вещи, не зависящие от фамилии президента IBM и текущего номера сервиспака к NT |
SU.FLAME | обсуждение превосходства Borland Delphi над всеми прочими средствами разработки |
Ответ: Bold является модельно-управляемой платформой для разработки архитектуры
приложений, для разработки инфраструктуры приложения, управляемой схемой приложения.
С технической стороны это n-уровневая структура, включающая встроенную среду
разработки.
Ответ: Каждый, кто хочет использовать UML, кто хочет получить качественное приложение "как задумано", кто нуждается в быстрой разработке надёжных профессиональных приложений.
Ответ: n-уровневое средство структурирует приложение в несколько уровней. В 2-х
уровневом приложении (например, приложение со стандартными компонентами Delphi
или C++Builder для работы с БД) GUI-компоненты связываются непосредственно с
таблицами БД.
В n-уровневом приложении есть уровень бизнес-объектов, содержащий бизнес-правила.
Ответ: Bold for Delphi/ Bold for C++ поддерживает двунаправленную интеграцию с Rational Rose (Rose 98 и выше). Поддержка других инструментальных средств, таких, например, как ObjectDomain, доступна по требованию. Остальные средства моделирования поддерживаются через обмен метаданными XMI и XML формата.
Ответ: Нет. Bold for Delphi/Bold for C++ является модельно-поддерживающей платформой,
которая тесно интегрирована в Delphi/C++Builder, используя стандартную компонентную
модель Delphi (VCL).
Bold for Delphi/Bold for C++ генерирует код для бизнес-классов. Код, первоначально
содержавший элементы для добавления методов и бизнес-правил, генерируется в
бизнес-объекты.
Ответ: Информация модели хранится в приложении в компоненте BoldModel. Кроме того, Bold for Delphi/Bold for C++ позволяет сохранять модель в файле. В дальнейшем планируется включить поддержку хранилища объектов.
Ответ: Да, Bold for Delphi/Bold for C++ обеспечивает автоматическую генерацию таблиц, а также изменение структуры с сохранением данных тогда, когда это требуется (что обычно случается при развитии модели!).
Ответ: Bold for Delphi включает в себя Bold for C++, предназначенный для Borland C++Builder.
Ответ: Bold for Delphi поддерживает все SQL-БД, доступ к которым осуществляется через Borland Database Engine, ADO или драйверы InterBase. Через Borland SQL Links BDE так же возможен доступ к Oracle, Sybase, Informix, MS SQL Server, DB2 и InterBase.
За дополнительной информацией обращайтесь в компанию Interface Ltd.
INTERFACE Ltd. |
|