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

Вниз

Нужна помощь   Найти похожие ветки 

 
Прохожев М.М   (2008-01-03 10:26) [0]

Здравствуйте! Помогите плз разобраться в чем дело.

Есть код программы который я записываю в событие "MouseMove" ListBox-а.
Модуль компилируется без проблем, но как только мне стоит положить на форму компонент "ExcelApplication" подключается модель (ExcelXP) и программа перестает компилироваться и выдает кучу ошибок. Пожалуйста, помогите решить проблему.

Вот код программы:

public
   { Public declarations }
   saved: integer;
   flagdown: boolean;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);

var prom: string;
    posit: Integer;
begin
if (saved < 0) or (saved >= ListBox1.Items.Count) then exit;
// Здесь происходит ошибка
posit := ListBox1.ItemAtPos(Point(X, Y), true);
// -------------------------

if (posit < 0) or (posit >= ListBox1.Items.Count) then exit;
if flagdown then
begin
  if (posit = saved) then exit;
  prom := ListBox1.Items[saved];
  ListBox1.Items[saved] := ListBox1.Items[posit];
  ListBox1.Items[posit] := prom;
end;
saved := posit;
end;


 
Loginov Dmitry ©   (2008-01-03 11:03) [1]

Приведенный тут обработчик ListBox1MouseMove никак не должен быть связан с ошибкой компиляции. Хотя текст ошибки здесь не приводится, продположу, что компилятор не может найти модуль ExcelXP, предположительно из-за того, что не установлен (либо криво установлен) компонент Microsoft Office XP. Проверь, есть ли вообще в папке с Delphi файл ExcelXP.dcu. Провер, если ли пункт "$(DELPHI)\Imports" в путях поиска.


 
Прохожев М.М   (2008-01-03 11:54) [2]

ExcelXP.dcu - Есть и офис XP поставлен нормально. Т.к компонент ExcelAplication в других программах использую без проблем. Стоит мне убрать обработчик из MouseMove, никаких проблем. Либо если убрать компонент ExcelAplication  из формы и удалить из Uses (ExcelXP) модуль компилируется ... Delphi мне поставил выбор (Либо убрать ExcelApplication из формы, либо убрать обработчик из ListBox) :( Мастера, подскажите как обыграть это ?


 
{RASkov} ©   (2008-01-03 12:25) [3]

> [2] Прохожев М.М   (03.01.08 11:54)

Если данный модуль небольшой, то кинь его целиком... что-то подозрительно-странное творится:)


 
Прохожев М.М   (2008-01-03 12:34) [4]

2 {RASkov} ©

Вот полный рабочий модуль который без проблем компилируется. Попробуйте установить на форму компонент ExcelApplication и модуль перестанит компилиться.  

unit uMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure ListBox1KeyUp(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public
   { Public declarations }
   saved: integer;
   flagdown: boolean;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if (ListBox1.ItemIndex >= 0) then
    begin
     Saved :=ListBox1.ItemIndex;
     flagdown := true;
    end;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);

var prom: string;
    posit: Integer;
begin
if (saved < 0) or (saved >= ListBox1.Items.Count) then exit;
posit := ListBox1.ItemAtPos(Point(X, Y), true);
if (posit < 0) or (posit >= ListBox1.Items.Count) then exit;

if flagdown then
begin
  if (posit = saved) then exit;
  prom := ListBox1.Items[saved];
  ListBox1.Items[saved] := ListBox1.Items[posit];
  ListBox1.Items[posit] := prom;
end;
saved := posit;
end;

procedure TForm1.ListBox1KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 flagdown := false;
end;

procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 flagdown := false;
end;                
end.


 
{RASkov} ©   (2008-01-03 13:12) [5]

> [4] Прохожев М.М   (03.01.08 12:34)

posit := ListBox1.ItemAtPos(Classes.Point(X, Y), true);


 
Прохожев М.М   (2008-01-03 13:35) [6]

2 {RASkov} ©

Спасибо Огромное!!! :)



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1198478957
saNat
2007-12-24 09:49
2008.01.27
Чтение свойства таблицы


3-1190392139
Егоров А.Н.
2007-09-21 20:28
2008.01.27
Подключение внешней функции в IB Expert


2-1198564025
@!!ex
2007-12-25 09:27
2008.01.27
помогите понять смысл кода.


2-1198611275
Kuvalda
2007-12-25 22:34
2008.01.27
Увеличение на единицу!


2-1198618035
Евгений Р.
2007-12-26 00:27
2008.01.27
Высота заголовка формы