powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DLL + TcxCheckListBox +TImageList + ImageIndex = Error
11 сообщений из 11, страница 1 из 1
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704391
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При событию btn1Click
Код: pascal
1.
lst1.Items[0].ImageIndex := 0;


ошибка Access violation at address 00000000

Проект
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
...
unit uApp;

interface

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

  procedure CreateMyForm(AppHandle: THandle); stdcall; external 'Form.dll';
  procedure DestroyMyForm; stdcall; external 'Form.dll';
type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  CreateMyForm(Application.Handle);
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  DestroyMyForm;
end;

end.



DLL проект
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
library Form;

uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas' {Form1};
exports
  CreateMyForm,
  DestroyMyForm;
end.



DLL unit
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
  StdCtrls, ImgList, cxContainer, cxEdit, cxCheckListBox, ExtCtrls,
  ComCtrls, cxTreeView;

type
  TForm1 = class(TForm)
    lst1: TcxCheckListBox;
    btn1: TButton;
    il1: TImageList;
    procedure btn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

  procedure CreateMyForm(AppHandle: THandle); stdcall;
  procedure DestroyMyForm; stdcall;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure CreateMyForm(AppHandle: THandle);
var
  Bitmap :TBitmap;
begin
  Application.Handle := AppHandle;
  Form1 := TForm1.Create(Application);
  Form1.Show
end;

procedure DestroyMyForm;
begin
  Form1.Free;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  lst1.Items[0].ImageIndex := 0;
end;
end.
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704396
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо в списке нет элементов т.е. [0] не существует
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704412
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

Он существует и размеры совпадают.
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704416
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот dll и app в одном архиве
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704429
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TForm1.btn1Click(Sender: TObject);
begin
   // --- lst1.Items[0].ImageIndex := 0;

   // Это работает? 
   lst1.Color:=clRed; 

   // Это работает?
   ShowMessage(IntToStr(lst1.Count)); 
end;
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704479
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

Код: pascal
1.
2.
  // Это работает? 
   lst1.Color:=clRed; 


Такого свойства нет

// Это работает?
ShowMessage(IntToStr(lst1.Count));
Результат = 1

Кроме того это работает
Код: pascal
1.
lst1.Items[0].text:= 'XXXX';



Проблема в компоненте, если вызывать форму через DLL.

Схожий компонент TcxTreeView, по отображению картинок через ImageIndex, работает.
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704483
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
  // Это работает? 
   lst1.Color:=clRed; 


TCheckListBox есть Color, но нет Images
TcxCheckListBox нет Color, но есть Images

я использую TcxCheckListBox
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704533
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abra,

Отлаживайтесь. Ошибка хорошая, очевидная и стабильная. Что еще нужно программисту?
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704631
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abra,

1) создайте проект-группу
2) добавьте в неё оба проекта
3) потом надо выставить зависимость проекта приложения от проекта DLL
4) настроить пути проектов так, чтобы DLL и EXE оказались в одном директории
5) запустить дебаг обоих проектов
6) поставить точку останова в DLLном проекте
7) нажать ту самую пресловутую кнопку
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39704771
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В группу проектов уже собиралось.
Несколько раз уже создавал проекты и перепроверял.

Признаки которые приводят к выводу что не работает проект.

1) Функционал в Aplication работает
2) Функционал в DLL не работает.

Тест проект как DLL:
Тест 1) В дизайн тайме
Компонент [TcxCheckListBox] Свойство: Images
Объект: [Items] Свойство ImageIndex = 0
Картинка отображается. После запуска проекта ошибка.

Тест 2)
нажимая на кнопку
lst1.Items[0].ImageIndex := 0; Ошибки нет
ShowMessage('count='+IntToStr(lst1.Count)); Ошибка есть

Значит проблема в компоненте в режиме DLL.
Может есть у кого DevExpres выше 6.59.
Может решилась эта проблема?

Попробую на DevExpres 14
...
Рейтинг: 0 / 0
DLL + TcxCheckListBox +TImageList + ImageIndex = Error
    #39705771
abra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реализовал без отображения картинок.
Добавлением текста к позиции.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DLL + TcxCheckListBox +TImageList + ImageIndex = Error
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]