Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

Бред какой-то   Найти похожие ветки 

 
PaRL ©   (2002-11-23 09:55) [0]

Pan : array of TPanel;
const Cols : array [0..15] of TColor = (clRed,...,clBlack);
var Col : TColor;
begin
for k := 0 to 15 do if Col = Cols[k] then
begin
SendMessage(Pan[k].Handle, WM_LBUTTONDOWN, 0, 0);
SendMessage(Pan[k].Handle, WM_LBUTTONUP, 0, 0);
end;
end;


В цикле происходит убывание, т.е. 15, 14, 13... Почему?
Даже когда доходит до k = 3, то цвета совпадают и должно послаться сообщение панели, в отладчике всё работает, т.е.
SendMessage(Pan[ 3].Handle, WM_LBUTTONDOWN, 0, 0);
SendMessage(Pan[ 3].Handle, WM_LBUTTONUP, 0, 0);

, но на деле получается, что сообщение отправляется Pan[ 0].Handle.


 
Юрий Зотов ©   (2002-11-23 10:52) [1]

1. Переменная k - локальная или глобальная?
2. Попробуйте отключить оптимизацию.


 
Anatoly Podgoretsky ©   (2002-11-23 10:58) [2]

Где объявлено К и также определения обработчиков, возможно также что то с обработчиками

Вставь в текст тестовые сообщения

begin
ShowMessage("Down="IntToStr(K));
SendMessage(Pan[k].Handle, WM_LBUTTONDOWN, 0, 0);
ShowMessage("Up="IntToStr(K));
SendMessage(Pan[k].Handle, WM_LBUTTONUP, 0, 0);
ShowMessage("End="IntToStr(K));
end;


 
PaRL ©   (2002-11-23 13:46) [3]


> begin
> ShowMessage("Down="IntToStr(K));
> SendMessage(Pan[k].Handle, WM_LBUTTONDOWN, 0, 0);
> ShowMessage("Up="IntToStr(K));
> SendMessage(Pan[k].Handle, WM_LBUTTONUP, 0, 0);
> ShowMessage("End="IntToStr(K));
> end;

Не, до этого я и сам дотумкался...
k - локальная.

> 2. Попробуйте отключить оптимизацию.

Пробовал. :(


 
Anatoly Podgoretsky ©   (2002-11-23 14:04) [4]

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


 
PaRL ©   (2002-11-23 14:34) [5]


> Ну и какие сообщения ны получил?



> Даже когда доходит до k = 3, то цвета совпадают и должно
> послаться сообщение панели, в отладчике всё работает, т.е.
>
> SendMessage(Pan[3].Handle, WM_LBUTTONDOWN, 0, 0);
> SendMessage(Pan[3].Handle, WM_LBUTTONUP, 0, 0);
> , но на деле получается, что сообщение отправляется Pan[0].Handle.


k = 3!


 
PaRL ©   (2002-11-23 14:37) [6]


implementation

uses MainU, AddU, IntFaseU;

const Cols : array [0..15] of TColor = (clBlack, clMaroon, clGreen, clOlive,
clNavy, clPurple, clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue,
clFuchsia, clAqua, clWhite);

var PanCol : array [0..15] of TPanel;

....

procedure TfmSyntax.FormCreate(Sender: TObject);
var a, b, i : byte;
s : string;
begin
i := 0;
for a := 0 to 3 do
for b := 0 to 3 do
begin
PanCol[i] := TPanel.Create(Self);
PanCol[i].Parent := Panel1;
PanCol[i].Left := 10 + a*33;
PanCol[i].Top := 8 + b*33;
PanCol[i].Width := 33;
PanCol[i].Height := 33;
PanCol[i].BevelOuter := bvRaised;
PanCol[i].BevelInner := bvRaised;
PanCol[i].Color := Cols[i];
PanCol[i].OnClick := ColClick;
inc(i);
end;
SendMessage(PanCol[0].Handle, WM_LBUTTONDOWN, 0, 0); // работает
SendMessage(PanCol[0].Handle, WM_LBUTTONUP, 0, 0); // работает
end;

procedure TfmSyntax.sbEditClick(Sender: TObject);
var a, st, pp : integer;
s : string;
begin
st := 0;
for a := 0 to lbWords.Count-1 do
if lbWords.Selected[a] then begin st := 1; pp := a; end;
for a := 0 to lbSymbs.Count-1 do
if lbSymbs.Selected[a] then begin st := 2; pp := a; end;

if (st = 1) or (st = 2) then
begin
cbBold.Checked := false;
cbItalic.Checked := false;
cbUnderline.Checked := false;
cbStrikeOut.Checked := false;

if st = 1 then s := lbWords.Items.Strings[pp];
if st = 2 then s := lbSymbs.Items.Strings[pp];
pp := 0;
for a := 0 to High(Attr) do if s = Attr[a].Name then
begin
for pp := 0 to 15 do if Attr[a].Color = Cols[pp] then
begin
SendMessage(PanCol[pp].Handle, WM_LBUTTONDOWN, 0, 0);
SendMessage(PanCol[pp].Handle, WM_LBUTTONUP, 0, 0);
end;
if fsBold in Attr[a].MainA then cbBold.Checked := true;
if fsItalic in Attr[a].MainA then cbItalic.Checked := true;
if fsUnderline in Attr[a].MainA then cbUnderline.Checked := true;
if fsStrikeOut in Attr[a].MainA then cbStrikeOut.Checked := true;
SB.Panels[0].Text := "Редактирование";
SB.Panels[1].Text := Attr[a].Name;
end;
end
else Application.MessageBox("Не выбран(о) символ(слово).",
PChar(Application.Title), mb_Ok);
end;


 
Anatoly Podgoretsky ©   (2002-11-23 14:48) [7]

Ты должен получить не одно сообщение а три
Не вижу обработчика нажатия
Продолжаем играть в загадки


 
PaRL ©   (2002-11-23 15:01) [8]


> Ты должен получить не одно сообщение а три

Почему. Какие.


...
public
procedure ColClick(Sender: TObject);
end;

...

procedure TfmSyntax.ColClick(Sender: TObject);
var a, n : byte;
begin
n := 0;
GetCursorPos(pt);
HP := WindowFromPoint(pt);

if HP = fmSyntax.Handle then Close;
for a := 0 to High(PanCol) do
if PanCol[a].Handle = HP then n := a;

for a := 0 to High(PanCol) do
if a <> n then
begin
PanCol[a].BevelInner := bvRaised;
PanCol[a].BevelOuter := bvRaised;
PanCol[a].Caption := "";
end
else
begin
Col := PanCol[a].Color;
PanCol[a].Caption := "¤";
PanCol[a].Font.Style := [fsBold];
PanCol[a].Font.Color := Cols[15-a];
if (PanCol[a].Color = clGray) or (PanCol[a].Color = clSilver)
then PanCol[a].Font.Color := clYellow;
PanCol[a].BevelInner := bvLowered;
PanCol[a].BevelOuter := bvLowered;
edExample.Font.Color := PanCol[a].Color;
end;
end;



 
PaRL ©   (2002-11-23 20:33) [9]

Вот.


 
PaRL ©   (2002-11-24 22:42) [10]

Ну что никаких идей нет? Я всё что можно привёл уже. Помогите плз.



Страницы: 1 вся ветка

Текущий архив: 2002.12.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-14433
Asderg
2002-11-18 10:22
2002.12.05
как узнать в запросе что поле ключевое?


1-14586
Андрей Сенченко
2002-11-27 13:08
2002.12.05
Аттрибуты функции FindFirst - не могу понять


3-14465
Asderg
2002-11-19 09:23
2002.12.05
как засунуть данные в блоб-поле запросом?


3-14384
Tundra
2002-11-19 16:07
2002.12.05
Можно ли определить высоту строки в DBGrid.


1-14611
litex
2002-11-24 20:56
2002.12.05
Как изменить шрифт установленный по умолчанию ...