Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1198681178
fics
2007-12-26 17:59
2008.01.27
TCanvas (нарисовать стрелочку)


3-1190018030
Alex'
2007-09-17 12:33
2008.01.27
Криптование всех процедур, функций MS SQL 2005.


2-1198865131
Антон Шестаков
2007-12-28 21:05
2008.01.27
Изменение пароля


2-1198616905
Terc
2007-12-26 00:08
2008.01.27
куки файлы


15-1198322066
homm
2007-12-22 14:14
2008.01.27
У меня счас крыша поедет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский