Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2004-07-11

Re: [OBORONA-SPAM] Создания Alias в BDE...

Здравствуйте, Feniks.

F> Кто-нибудь может подсказать, как можно программно на Делфи и
F> Билдере создавать Алиасы в BDE с указанием его имени, типа и пути к
F> Базе ?

procedure TBDForm.FormActivate(Sender: TObject);
begin
Database1.DatabaseName:= 'Database';
Database1.Params.Clear;
Database1.Params.Add('PATH=');
Table1.DatabaseName:= 'Database';
Table1.TableName:= 'Database.db';
Table1.Active:= True;
DataSource1.DataSet:= Table1;
DBGrid1.DataSource:= DataSource1;
end;

При этом в Database AliasName='', но при этом заполняются DatabaseName и
DriverName

   2004-07-11 23:49:47 (#188623)

Re: Создания Alias в BDE...

Hello Feniks,

Friday, July 9, 2004, 11:10:26 AM, you wrote:

F> Здравствуйте, коллеги.

F> Кто-нибудь может подсказать, как можно программно на Делфи и
F> Билдере создавать Алиасы в BDE с указанием его имени, типа и пути к
F> Базе ?
F> Когда-то я где-то это уже видел, но тогда не было необходимости и не
F> придал этому большое значение. Теперь вот срочно понадобилось, а
F> найти не могу.

В Delphi для создания статичных Aliases существует компонент TDataBase
на вкладке BDE, там всё и прописывается, но учти Aliase доступен
только если форма открыта в Delphi и доступна во всех БДышных
Delphi'ских программах, кроме "Database desktop".
Удобно тем, что не надо прописывать Aliase на конечном компьютере.
Аналогичный компонент есть и для ADO

   2004-07-11 23:47:01 (#188621)

Re: Анализ нажатий

Здоровеньки булы, Дима Барсуков!

9 июля 2004 г., пятница, 11:52:15 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "Анализ нажатий",
в котором сообщалось следующее:

ДБ> Выяснил, что если на кнопке не стоит фокус, то эти события замечательно обрабатываются
ДБ> формой... Но при этом никак не получаетсся убрать фокус с кнопки...
ДБ> Проясните ситуацию, кто сталкивался, плиз...

Короче вот работающий код, я привожу на Delphi - Builder влом ставить
на форме Timer1, Button1, Button2 и ActionControl1 (в нем акшионы
ActionLeft, ActionRight, ActionUp и ActionDown).
Надеюсь в Bilder сможешь сам перевести - там делов на минуту.
PS: На форме две кнопки - координаты меняет та на которой стоит фокус.
PPS: Реализовано немного через задницу, но если нет другого способа
обойти необработку Left, Right, Up, Down через OnKeyDown то я думаю этот сойдет.

public
keys: array[0..255] of Boolean;
procedure ProcessKeys;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ActionLeftExecute(Sender: TObject);
begin
keys[VK_LEFT] := True;
end;

procedure TForm1.ActionRightExecute(Sender: TObject);
begin
keys[VK_RIGHT] := True;
end;

procedure TForm1.ActionUpExecute(Sender: TObject);
begin
keys[VK_UP] := True;
end;

procedure TForm1.ActionDownExecute(Sender: TObject);
begin
keys[VK_DOWN] := True;
end;

procedure TForm1.ProcessKeys;
begin
with Form1.ActiveControl{ Button1} do
begin
if keys[VK_LEFT] then Left := Left - 1;
if keys[VK_RIGHT] then Left := Left + 1;
if keys[VK_UP] then Top := Top - 1;
if keys[VK_DOWN] then Top := Top + 1;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProcessKeys;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
ActionLeft.ShortCut := ShortCut(VK_LEFT , []);
ActionRight.ShortCut := ShortCut(VK_RIGHT, []);
ActionUp.ShortCut := ShortCut(VK_UP , []);
ActionDown.ShortCut := ShortCut(VK_DOWN , []);
Timer1.Interval := 10;
Form1.KeyPreview := true;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
keys[Key] := False;
end;

   Томилов Александр 2004-07-11 23:11:55 (#188602)

Re[3]: Анализ нажатий

Прив, 2071434-comp,

Saturday, July 10, 2004, 8:27:15 PM, Вами написано:

B> Вот тут вы не правы. Попробуйте создать пустую форму и у неё назначить
B> OnKeyDown.
B> Судя по всему, когда нажимаешь на стрелочки, программа считает, что
B> юзер хочет переместиться на другой контрол и поэтому не вызывает
B> OnKeyDown.

Не знаю, все работает, onKeyDown и Upp прекрасно ловят все нажатия и выдают скенкод.
Вот если еще кнопку добавить...тогда плохо дело.
А если TabOrder обнулить у всех компонетов?
Я уже пробовал WndProc перехватить, не работает... очень странно.

   2004-07-11 22:14:02 (#188560)

Re[5]: Анализ нажатий

Здоровеньки булы, Alf!

10 июля 2004 г., суббота, 22:56:01 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "Анализ нажатий",
в котором сообщалось следующее:

A> А кто-нибудь может объяснить, почему все-таки нажатия клавиш enter и
A> стрелок он в упор не видит? Основная задача - это анализ именно их, а
A> уже проблемы с фокусом это побочное явление...

ИМХО все кроется в том что при событиях нажатия на стрелки/таб/ентер
идет переход на другие контролы/вызов OnClick - т.е. служебные
события. Но остается вопрос - почему тогда OnKeyUp срабатывает?

Кстати это тоже не работает как надо (KeyUp работает, а KeyDown -
нет):

TButton_ = class(TButton)
protected
keys : Array[0..255] of Boolean;
procedure WndProc(var Message: TMessage); override;
...

procedure TButton_.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_KEYDOWN:
begin
keys[Message.WParam] := True;
Message.Result := 0;
end;
WM_KEYUP:
begin
keys[Message.WParam] := False;
Message.Result := 0;
end;
end;
ProcessKeys;
inherited WndProc(Message);
end;

   Томилов Александр 2004-07-11 20:07:08 (#188481)