nyuuzyou/wikis huggingface dataset:
Мерцание формы

=== Мерцание формы ===
Как бы это осуществить рисование в окне без его дурацкого мерцания и без помощи создания виртуального изображения в памяти? WM_SETREDRAW здесь поможет? 
Попробуйте этот код. Даже если некоторые компоненты имеют пару BeginUpdate / EndUpdate, то для таких компонентов, как TTreeView, интенсивное рисование может послужить причиной перемещения полосы прокрутки и появления других "барабашек". В таких ситуаций вместо дескриптора элемента управления используйте родительский дескриптор.
procedure BeginScreenUpdate(hwnd: THandle);
begin
 if (hwnd = 0) then
 hwnd := Application.MainForm.Handle;
 SendMessage(hwnd, WM_SETREDRAW, 0, 0);
end;
procedure EndScreenUpdate(hwnd: THandle; erase: Boolean);
begin
 if (hwnd = 0) then
 hwnd := Application.MainForm.Handle;
 SendMessage(hwnd, WM_SETREDRAW, 1, 0);
 RedrawWindow(hwnd, nil, 0, DW_FRAME + RDW_INVALIDATE +
 RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
 if (erase) then
 Windows.InvalidateRect(hwnd, nil, True);
end;
Source: Взято с http://delphiworld.narod.ru
ID: 00422
Метод Гаусса решения системы линейных уравнений

{ **** UBPFD *********** by kladovka.net.ru ****
>> Метод Гаусса решения системы линейных уравнений
Решение системы линейных уравнений (возможно переопределенной) методом Гаусса.
Определяется ситуация, что система не имеет решений. Ситуация, когда система
имеет более чем одно решение не рассматривается. В случае удачного завершения
возвращает нуль.
Зависимости: System
Автор: Mystic, mystic2000@newmail.ru, ICQ:125905046, Харьков
Copyright: (C) Mystic
Дата: 25 апреля 2002 г.
********************************************** }
function LinGauss(M, N: Integer; Data: PExtended; X: PExtended): Cardinal;
var
 PtrData: PExtended;
 PtrData1, PtrData2: PExtended;
 Temp: Extended;
 I, J, Row: Integer;
 Max: Extended;
 MaxR: Integer;
begin
 Assert(M >= N, 'Invalid start data');
 for I := 0 to N-1 do // Для каждой переменной
 begin
 // 1. Поиск максимального элемента
 PChar(PtrData) := PChar(Data) + I*(N+2)*SizeOf(Extended);
 MaxR := I;
 Max := PtrData^;
 for J := I+1 to M-1 do
 begin
 PChar(PtrData) := PChar(PtrData) + (N+1)*SizeOf(Extended);
 if Abs(PtrData^) > Abs(Max) then
 begin
 Max := PtrData^;
 MaxR := J;
 end;
 end;
 // 2. А вдруг неразрешима?
 if Abs(Max) < 1.0E-10 then
 begin
 Result := $FFFFFFFF;
 Exit;
 end;
 // 3. Меняем местами строки
 if MaxR <> I then
 begin
 PChar(PtrData1) := PChar(Data) + MaxR*(N+1)*SizeOf(Extended);
 PChar(PtrData2) := PChar(Data) + I*(N+1)*SizeOf(Extended);
 for J := 0 to N do
 begin
 Temp := PtrData1^;
 PtrData1^ := PtrData2^;
 PtrData2^ := Temp;
 PChar(PtrData1) := PChar(PtrData1) + SizeOf(Extended);
 PChar(PtrData2) := PChar(PtrData2) + SizeOf(Extended);
 end;
 end;
 // 4. Пересчет направляющей строки
 PChar(PtrData) := PChar(Data) + I*(N+1)*SizeOf(Extended);
 for J := 0 to N do
 begin
 PtrData^ := PtrData^ / Max;
 PChar(PtrData) := PChar(PtrData) + SizeOf(Extended);
 end;
 // 5. Пересчет всей оставшейся части таблицы
 PtrData1 := Data;
 for Row := 0 to M-1 do
 begin
 if Row = I then
 begin
 PChar(PtrData1) := PChar(PtrData1) + (N+1)*SizeOf(Extended);
 Continue;
 end;
 PChar(PtrData2) := PChar(Data) + I*(N+1)*SizeOf(Extended);
 Temp := PExtended(PChar(PtrData1) + I*SizeOf(Extended))^;
 for J := 0 to N do
 begin
 PtrData1^ := PtrData1^ - Temp * PtrData2^;
 PChar(PtrData1) := PChar(PtrData1) + SizeOf(Extended);
 PChar(PtrData2) := PChar(PtrData2) + SizeOf(Extended);
 end;
 end;
 end;
 // 6. Проверка того, что система переопределена
 PChar(PtrData) := PChar(Data) + N*(N+1)*SizeOf(Extended);
 for I := N to M-1 do
 for J := 0 to N do
 begin
 if Abs(PtrData^) > 1.0E-10 then
 begin
 Result := $FFFFFFFF;
 Exit;
 end;
 PChar(PtrData) := PChar(PtrData) + SizeOf(Extended);
 end;
 // Все ОК
 PChar(PtrData) := PChar(Data) + N*SizeOf(Extended);
 for I := 0 to N-1 do
 begin
 X^ := PtrData^;
 PChar(X) := PChar(X) + SizeOf(Extended);
 PChar(PtrData) := PChar(PtrData) + (N+1) * SizeOf(Extended);
 end;
 Result := 0;
end;
Author: Mystic
ID: 04252
Category:Алгоритмы
Category:Математика
Метод Дихотомии

program dicotomie;
var
 y: Integer;
 function f(var x: Real): Real;
 begin
 if y = 1 then
 f := sin(x) - 1 / 2
 else
 begin
 if y = 2 then
 f := exp(x) - 2
 else
 begin
 if y = 3 then
 f := sqr(x) - 2;
 end;
 end;
 end;
 procedure verif;
 var
 a, b, m, ep, va: Real;
 i, n: Integer;
 r, c: Char;
 begin
 repeat
 WriteLn('Выберите одну функцию из трёх:');
 WriteLn('f[x]=sin(x)-1/2.....[1]');
 WriteLn('f[x]=exp(x)-2.......[2] ');
 WriteLn('f[x]=x(puiss)2-2....[3] ');
 Write('введите номер [i] из 1..3 i=');
 ReadLn(y);
 WriteLn('Чтобы расчитать корень функции f[x] введите интервал [a,b]');
 Write('введите a=');
 ReadLn(a);
 Write('введите b=');
 ReadLn(b);
 begin
 if a > b then
 repeat
 WriteLn('*****************ЗАМЕЧАНИЕ**************');
 WriteLn(' *** должно быть a < b *** ');
 Write('Пожалуйста, введите другой интервал или поменяйте местами значения a=');
 ReadLn(a);
 Write(' b=');
 ReadLn(b);
 until a < b;
 begin
 if f(a) * f(b) > 0 then
 repeat
 WriteLn('*******************ЗАМЕЧАНИЕ************************');
 WriteLn(' *** функция не допускает нулей в своем интервале *** ');
 WriteLn(' ');
 Write('Пожалуйста, введите другой интервал a=');
 ReadLn(a);
 Write(' b=');
 ReadLn(b);
 until f(a) * f(b) <= 0;
 WriteLn('функция f допускает хотя бы один нуль в [', a, ';', b, ']');
 Write(' ');
 Write('введите количество итераций n=');
 ReadLn(n);
 m := (a + b) / 2;
 if f(m) = 0 then
 ep := m
 else
 begin
 for i := 1 to n - 1 do
 begin
 if f(m) * f(a) > 0 then
 begin
 a := m;
 m := (b + m) / 2;
 end
 else
 m := (a + m) / 2;
 b := 2 * m - a;
 end;
 end;
 i := i + 1;
 ep := m;
 WriteLn(' КОРЕНЬ для "итерации ', n,' - это эпсилон=', ep);
 Write('Вычислить[', ep, '] Y/N?');
 ReadLn(c);
 if c = 'Y' then
 WriteLn('f[', ep, ']=', f(ep));
 Write('Продолжить Y/N? ');
 ReadLn(r);
 end;
 end;
 until r = 'N';
 end;
begin
 WriteLn(' Метод дихотомии');
 WriteLn();
 WriteLn();
 verif;
end.
ID: 04247
Category:Алгоритмы
Category:Математика
Метод Монте-Карло

Рассмотрим произвольный квадрат с центром в начале координат и вписанный в него круг. Будем рассматривать только первую координатную четверть. В ней будет находиться четверть круга и четверть квадрата. Обозначим радиус круга r, тогда четверть квадрата тоже будет квадратом (очевидно) со стороной r.
Будем случайным образом выбирать точки в этом квадрате и считать количество точек, попавших в четверть круга. Благодаря теории вероятности мы знаем, что отношение попаданий в четверть круга к попаданиям 'в молоко' равно отношению площадей - пи/4. Вот, собственно, и весь алгоритм... Чем больше взятых наугад точек мы проверим, тем точнее будет отношение площадей.
Вот простенькая программа на Паскале, считающая пи этим способом... Четыре первых знака требуют на моем PentiumII-300 около 5 минут...
uses Crt;
const
 n = 10000000;
 r = 46340;
 r2 = 46340 * 46340;
var
 i, pass: LongInt;
 x, y: Real;
{$F+}
begin
 WriteLn('Поехали!');
 Randomize;
 pass := 0;
 for i := 1 to n do
 begin
 x := Random(r+1);
 y := Random(r+1);
 if (x*x + y*y < r2) then Inc(pass);
 end;
 TextColor(GREEN);
 WriteLn('Число ПИ получилось равным: ', (pass / i * 4):0:5);
 ReadLn;
end.
Source: http://algolist.manual.ru
ID: 04239
Category:Алгоритмы
Category:Математика
Методы компрессии/декомпрессии

Библиотека "TurboPower Abbrevia" - поддерживает многочисленные методы компрессии/декомпрессии, большое количество сопутствующих компонентов для работы с архивами. Бесплатная, с исходниками.
* https://github.com/TurboPack/Abbrevia
* Можно скачать на https://torry.net/authorsmore.php?id=4212
Source: Взято из http://forum.sources.ru
ID: 04177
Category:Алгоритмы
Category:Сжатие данных
Мигание кнопки приложения

=== Мигание кнопки приложения ===
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 FlashWindow(Application.Handle, True);
end;
Source: http://delphiworld.narod.ru/
ID: 01780
----
// Timer1.Interval = n (Tip for n = 1000 "1 second")
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 FlashWindow(Handle, True);
 FlashWindow(Application.Handle, true);
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01781
----
// Define FLASHWINFO structure as record type 
type 
 FLASHWINFO = record 
 cbSize: UINT; 
 hWnd: HWND; 
 dwFlags: DWORD; 
 uCount: UINT; 
 dwTimeOut: DWORD; 
 end; 
 TFlashWInfo = FLASHWINFO; 
 // Define dwFlags constants 
const 
 FLASHW_STOP = 0; 
 FLASHW_CAPTION = 1; 
 FLASHW_TRAY = 2; 
 FLASHW_ALL = FLASHW_CAPTION or FLASHW_TRAY; 
 FLASHW_TIMER = 4; 
 FLASHW_TIMERNOFG = 12; 
var 
 Form1: TForm1; 
 FWInfo: TFlashWInfo; 
// Function declaration for WinAPI call 
function FlashWindowEx(var pfwi: FLASHWINFO): BOOL; stdcall; 
implementation 
// Import external function from 'USER32.DLL' with the same name 
function FlashWindowEx; external user32 Name 'FlashWindowEx'; 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 // Check for API function's availability 
 if not Assigned(@FlashWindowEx) then 
 begin 
 ShowMessage('API Function FlashWindowEx is not present... Exit program!'); 
 Application.Terminate; 
 end 
 else 
 // Set default parameters 
 with FWInfo do 
 begin 
 cbSize := SizeOf(FWInfo); // Size of structure in bytes 
 hWnd := Form1.Handle; // Main's form handle 
 dwFlags := FLASHW_ALL; // Flash both caption & task bar 
 uCount := 10; // Flash 10 times 
 dwTimeOut := 100; // Timeout is 1/10 second apart 
 end; 
end; 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 // Flash on normal state 
 FlashWindowEx(FWInfo); 
end; 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
 // Flash on minimized state 
 WindowState := wsMinimized; // Application.Minimize; 
 FlashWindowEx(FWInfo); 
end;
Source: http://delphiworld.narod.ru/
ID: 01782
Мне нужны временные таблицы, но их нет в IB. Что делать?

=== Мне нужны временные таблицы, но их нет в IB. Что делать? ===
IB не расчитан на частое изменение метаданных, поэтому создание таблицы на ходу и ее удаление не является хорошим приемом. Вместо временной таблицы вы можете создать постоянную таблицу для тех-же целей с первым полем равным USER (и входящим в первичный ключ). В этом случае даже если несколько пользователей начнут добавлять записи в такую таблицу, конфликта между ними не будет. Вместо USER можно использовать генератор (generator), который будет действовать на все время работы пользователя. Тогда если ваше приложение не использует регистрацию IB, и все USER одинаковы, генераторы предотвратят конфликт между пользователями.
Author: Дмитрий Кузьменко
Source: http://www.ibase.ru/
ID: 02918
Category:Базы данных
Category:Interbase
Многострочность в заголовках колонок StringGrid

=== Многострочность в заголовках колонок StringGrid ===
У меня есть StringGrid, который выглядит очень красивым, за исключением заголовков колонок, где я хотел бы иметь их размер равным 1 ячейке, но с заголовком, размещенным в нескольких строках, например,
 Индекс Фондовой Биржи
показывалось бы как
 Индекс
 Фондовой
 Биржи
было бы классно, если можно было этот заголовок размещать еще и по центру. 
Рисовать сами ячейки вы можете в обработчике события OnDrawCell. Для определения ячейки (заголовок?), обрабатываемой в текущий момент, используйте параметр GridState. 
Я выводил тест с помощью обычных методов рисования (которые хорошо "приживаются" в данном компоненте), с поддержкой вертикального выравнивания, полей и переноса слов. Вот сам код:
TFTVerticalAlignment = (vaTop, vaMiddle, vaBottom);
procedure DrawTextAligned(const Text: string; Canvas: TCanvas;
 var Rect: TRect; Alignment: TAlignment; VerticalAlignment:
 TFTVerticalAlignment; WordWrap: Boolean);
var
 P: array[0..255] of Char;
 H: Integer;
 T: TRect;
 F: Word;
begin
 StrPCopy(P, Text);
 T := Rect;
 with Canvas, Rect do
 begin
 F := DT_CALCRECT or DT_EXPANDTABS or DT_VCENTER or TextAlignments[Alignment];
 if WordWrap then
 F := F or DT_WORDBREAK;
 H := DrawText(Handle, P, -1, T, F);
 H := MinInt(H, Rect.Bottom - Rect.Top);
 if VerticalAlignment = vaMiddle then
 begin
 Top := ((Bottom + Top) - H) div 2;
 Bottom := Top + H;
 end
 else if VerticalAlignment = vaBottom then
 Top := Bottom - H - 1;
 F := DT_EXPANDTABS or DT_VCENTER or TextAlignments[Alignment];
 if WordWrap then
 F := F or DT_WORDBREAK;
 DrawText(Handle, P, -1, Rect, F);
 end;
end;
Source: http://delphiworld.narod.ru/
ID: 01088
Многострочные подсказки

=== Многострочные подсказки ===
Если подсказка длинная, то удобно ее разместить в две или более строк. 
procedure TForm1.FormCreate(Sender: TObject);
begin
 Button1.Hint := 'Only one string';
 Button2.Hint := 'There will be' + #13#10 + 'two strings';
 Form1.ShowHint := true;
end;
 e-mail: delphi4all@narod.ru
 e-mail: aleksey@sch103.krasnoyarsk.su
Author: : Алексей Денисов
ID: 01267
----
Необходимо создать соответствующую компоненту которая показывает "быструю подсказку" (Hints) с более чем одной строкой. Компонента наследуется от TComponent и называется TMHint. Hint-текст можно задавать следующим образом: "Строка 1@Строка 2@Строка 3". Символ '@' используется как разделитель строк. Если Вам нравится другой символ - измените свойство Separator. Свойство Active указывает на активность (TRUE) или неактивность (FALSE) "многострочности"
unit MHint;
interface
uses
 SysUtils, WinTypes, WinProcs, Messages,
 Classes, Graphics, Controls, Forms, Dialogs;
type
 TMHint = class(TComponent)
 private
 ScreenSize: Integer;
 FActive: Boolean;
 FSeparator: Char;
 FOnShowHint: TShowHintEvent;
 protected
 procedure SetActive(Value: Boolean);
 procedure SetSeparator(Value: char);
 procedure NewHintInfo(var HintStr: string;
 var CanShow: Boolean;
 var HintInfo: THintInfo);
 public
 constructor Create(AOwner: TComponent); override;
 published
 property Active: Boolean
 read FActive write SetActive;
 property Separator: Char
 read FSeparator write SetSeparator;
 end;
procedure Register;
implementation
constructor TMHint.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 FActive := True;
 FSeparator := '@';
 Application.OnShowHint := NewHintInfo;
 ScreenSize := GetSystemMetrics(SM_CYSCREEN);
end;
procedure TMHint.SetActive(Value: Boolean);
begin
 FActive := Value;
end;
procedure TMHint.SetSeparator(Value: Char);
begin
 FSeparator := Value;
end;
procedure TMHint.NewHintInfo(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
var
 I: Byte;
begin
 if FActive then
 begin
 I := Pos(FSeparator, HintStr);
 while I > 0 do
 begin
 HintStr[I] := #13;
 I := Pos(FSeparator, HintStr);
 end;
 if HintInfo.HintPos.Y+10 > ScreenSize then
 HintInfo.HintPos.Y := ScreenSize-11;
 end;
end;
procedure Register;
begin
 RegisterComponents('MyComponents', [TMHint]);
end;
end.
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01268
Множественный выбор в TStringGrid

=== Множественный выбор в TStringGrid ===
То же самое я проделывал и с DBGrid. (Пока не реализован Shift-MouseDown, только Ctrl-MouseDown). 
Для TStringGrid вам нужно выполнить следующие шаги: 
Заполните сетку, связывая Objects[0, ARow] с некоторым логическим объектом типа:
TBooleanObject = class(TObject)
public
 Flag: Boolean;
end;
В обработчике события OnMouseDown и OnKeyDown измените флаг, как того требует ситуация. 
В обработчике события OnDrawCell отрисуйте строку согласно флагу Objects[0,ARow]. 
Source: http://delphiworld.narod.ru/
ID: 01053
Могу ли я использовать в программе скрипт с Дельфи синтаксисом

=== Могу ли я использовать в программе скрипт с Дельфи синтаксисом ===
Да. В JVCL есть компонент Interpreter который позволяет выполнять скрипты написанные на Дельфи.
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
ID: 00334
Модуль данных для каждого MDIChild

=== Модуль данных для каждого MDIChild ===
Когда во время разработки вы устанавливаете "DataSource"-свойство в БД-компонентах для указания на модуль данных, VCL во время выполнения приложения будет пытаться создать связь с существующим TDataModule, основываясь на его свойтсве Name. Так, если вы добавите модуль данных к вашему проекту и переместите его в свойстве проекта из колонки автоматически создаваемых форм в колонку доступных, вы сможете разработать форму, содержащую элементы управления для работы с базами данных, после чего несколькими строчками кода можете создать экземпляр формы, имеющий экземпляр собственного модуля данных. 
С помощью Репозитория создайте "standard MDI application" (стандартное MDI-приложение), в котором модуль TMDICHild будет похож на приведенный ниже. Добавленные строки имеют комментарий {!}. Хитрости спрятаны в конструкторе create и задании другого порядка следования операторов.
unit Childwin;
interface
uses Windows, Classes, Graphics, Forms, Controls,
 ExtCtrls, DBCtrls, StdCtrls, Mask, Grids, DBGrids,
 DataM; {!} // Модуль TDataModule1
type
 TMDIChild = class(TForm)
 DBGrid1: TDBGrid;
 DBGrid2: TDBGrid;
 DBEdit1: TDBEdit;
 DBEdit2: TDBEdit;
 DBNavigator1: TDBNavigator;
 procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
 { Private declarations }
 public
 { Public declarations }
 {!} DM: TDataModule1;
 {!} constructor Create(AOwner: TComponent); override;
 end;
implementation
{$IFDEF XOXOXOX} // DataM должен находиться в секции interface. Необходимо для среды
uses DataM; // времени проектирования. Определение "XOXOXOX" подразумевает,
{$ENDIF} // что это никогда не будет определено, но чтобы компилятор видел это.
{$R *.DFM}
{!} constructor TMDIChild.Create;
{!}
begin
 {!} DM := TDataModule1.Create(Application);
 {!} inherited Create(AOwner);
 {!} DM.Name := ;
 {!}
end;
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caFree;
end;
end.
Source: Взято с http://delphiworld.narod.ru
ID: 00499
Можно-ли в запросах делать поиск по BLOB?

=== Можно-ли в запросах делать поиск по BLOB? ===
Да. Поиск по строковым (CHAR, VARCHAR) полям или по BLOB можно производить при помощи операторов CONTAINING, STARTING WITH и LIKE. Например
SELECT * FROM MYTABLE
WHERE BLOBFIELD CONTAINING 'sometext';
Поиск по умолчанию считается case-insensitive (регистро-нечувствительный), поэтому для латинских букв строку поиска можно задавать строчными буквами (в нижнем регистре). В этом случае при поиске 'sometext' в ответ войдут записи с 'sometext', 'SOMETEXT' и 'SomeText'. К сожалению, для BLOB невозможно указать COLLATE для правильного перевода русских букв в верхний регистр, поэтому поиск слов, содержащих русские буквы, будет производиться только по точному совпадению.
При поиске подтип BLOB (SUB_TYPE 0 или 1 - текст или binary) не имеет значения, т.к. подтип имеет значение только для приложения, или для фильтров BLOB. BLOB-ы разных подтипов хранятся абсолютно одинаковым способом.
Author: Дмитрий Кузьменко
Source: http://www.ibase.ru/
ID: 02885
Category:Базы данных
Category:Interbase
Можно-ли поместить БД IB на CD-ROM?

=== Можно-ли поместить БД IB на CD-ROM? ===
В IB 4.x и 5.x база данных должна быть всегда доступна на запись, т.к. даже простая выборка (чтение) из БД стартует транзакцию, а информация о транзакции должна быть записана в БД.
Возможность работать с read-only базами данных, а следовательно и помещать их на CD-ROM, появилась только в IB 6.0 и Firebird. Для того, чтобы сделать БД read-only, достаточно выполнить команду
 gfix database.gdb -mode read_only
перед этим рекомендуется сделать backup/restore базе данных, предварительно установив флаг no_reserve в true (ключ -use у gfix), чтобы данные в БД были максимально уплотнены.
Также возможно установить режим read_only прямо при restore соответствующей опцией gbak.
Подробнее по режиму read_only см. документацию по IB6.
Author: Дмитрий Кузьменко
Source: http://www.ibase.ru/
ID: 02892
Category:Базы данных
Category:Interbase
Можно-ли создать индекс по полю view?

=== Можно-ли создать индекс по полю view? ===
Нет. Индекс должен быть у поля таблицы, входящей во view. View является видом на таблицу или несколько таблиц, поэтому не может иметь физического индекса как у обычной таблицы.
Если вы хотите использовать индексы в компоненте TTable, то делать это нужно не через свойство IndexName, а указывая поле, по которому вы хотите отсортировать таблицу или view, непосредственно в свойстве IndexFieldNames. SQL-сервер сам разберется, есть-ли по такому полю индекс, и сможет-ли он использовать его для ускорения обработки запросов.
Author: Дмитрий Кузьменко
Source: http://www.ibase.ru/
ID: 02916
Category:Базы данных
Category:Interbase
Можно-ли создать пользователя БД при помощи SQL-команды?

=== Можно-ли создать пользователя БД при помощи SQL-команды? ===
Нет. Единственно правильный способ - использовать Server Manager. (Tasks | User Security), либо утилиту командной строки GSEC, либо IB user API (для IB 5.x). См. www.ibase.ru/download.htm, www.borland.com/devsupport/bde/.
Author: Дмитрий Кузьменко
Source: http://www.ibase.ru/
ID: 02882
Category:Базы данных
Category:Interbase
Можно ли динамически изменять свойство owner компонента во время выполнения программы?

=== Можно ли динамически изменять свойство owner компонента во время выполнения программы? ===
Вы можете менять свойство "owner" и после создания компонента с помощью методов InsertComponent() и RemoveComponent(). 
Author: Aziz(JINX)
Source: DELPHI VCL FAQ
ID: 00105
Можно ли динамически менять какая форма считается главной в приложении во время работы программы?

=== Можно ли динамически менять какая форма считается главной в приложении во время работы программы? ===
Можно, но только во время загрузки приложения. Чтобы сделать это выберите "View->Project Source" и измените код инициализации приложения, так что порядок создания форм зависел от какого-то условия. 
Примечание: Вам придется редактировать этот код, если Вы добавите в приложение новые формы.
begin
 Application.Initialize;
 if { какое - то условие } then
 begin
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
 end
 else
 begin
 Application.CreateForm(TForm2, Form2);
 Application.CreateForm(TForm1, Form1);
 end;
end.
Application.Run;
ID: 00436
Можно ли задать шаг в For?

=== Можно ли задать шаг в For? ===
for i := 0 to Maximum do
begin
 if (i mod Step) = 0 then
 begin
 //...
 end;
end; 
Переменная Step и есть нужный шаг
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: http://forum.sources.ru
ID: 00078
Можно ли изменить число колонок и их ширину в компоненте TFileListBox?

=== Можно ли изменить число колонок и их ширину в компоненте TFileListBox? ===
В приведенном примере FileListBox приводится к типу TDirectoryListBox - таким образом можно добавить дополнительные колонки. 
with TDirectoryListBox(FileListBox1) do 
begin
 Columns := 2;
 SendMessage(Handle, LB_SETCOLUMNWIDTH, Canvas.TextWidth('WWWWWWWW.WWW'), 0);
end;
ID: 00657
Можно ли использовать иконку как картинку на кнопке TSpeedButton?

=== Можно ли использовать иконку как картинку на кнопке TSpeedButton? ===
uses ShellApi;
procedure TForm1.FormShow(Sender: TObject);
var
 Icon: TIcon;
begin
 Icon := TIcon.Create;
 Icon.Handle := ExtractIcon(0, 'C:\WINDOWS\NOTEPAD.EXE', 1);
 SpeedButton1.Glyph.Width := Icon.Width;
 SpeedButton1.Glyph.Height := Icon.Height;
 SpeedButton1.Glyph.Canvas.Draw(0, 0, Icon);
 Icon.Free;
end;
ID: 01240
Можно ли как-то уменьшить мерцание при перерисовке компонента?

=== Можно ли как-то уменьшить мерцание при перерисовке компонента? ===
Если добавить флаг csOpaque (непрозрачный) к свойству ControlStyle компонента - то фон компонента перерисовываться не будет.
constructor TMyControl.Create;
begin
 inherited;
 ControlStyle := ControlStyle + [csOpaque];
end;
ID: 00348