Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
ВнизНужна помощь Найти похожие ветки
← →
Прохожев М.М (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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c