Компоненты и примеры

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Компоненты и примеры

Сообщение v-t-l » 14.11.2011 16:46:25

http://mirrors.iwi.me/lazarus/ в архиве с исходниками в папке components :D
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Компоненты и примеры

Сообщение Little_Roo » 15.11.2011 23:59:04

v-t-l писал(а):http://mirrors.iwi.me/lazarus/ в архиве с исходниками в папке components

Ой-ей - не надо - лучшее- враг хорошего :( :( :(
Попробовал обновить только лазрепорт - лучше бы это не делал...
Во всех отчетах в Memo оказалась вбитой западная кодировка символов, отчет перезаписался - и вместо русских букв встали знаки ?????
Хорошо, что копия отчетов была :oops:
Кстати, это стало тянуться и в лазаре из svn версии более 33000 - вот на ней и сижу...
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Компоненты и примеры

Сообщение qivi » 18.11.2011 02:02:09

В приложенном файле компонент, потомок ГрафикКонтрол... проблема следующая, в дизайнере форм свойство Anchorrs редактируется, но в запущенном приложении игнорируется. Что не так с этим компонентом и как это лечится?

Другие компоненты в замен предлагать не надо, интересует только как это лечится.

Добавлено спустя 10 часов 15 минут 30 секунд:
Люди человеки... помогите пожалуйста советом добрым :)
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Компоненты и примеры

Сообщение sign » 19.11.2011 09:41:22

Используйте редактор привязок (правая кл. мышки - локальное меню - редактор привязок).
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Компоненты и примеры

Сообщение qivi » 19.11.2011 13:54:04

Используйте редактор привязок (правая кл. мышки - локальное меню - редактор привязок).

Да я его и использую, о чём и написано выше, в дизайнтайме всё работает, но когда запускаю программу этот компонент игнорирует привязки.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Компоненты и примеры

Сообщение sign » 20.11.2011 15:47:16

qivi писал(а):
Используйте редактор привязок (правая кл. мышки - локальное меню - редактор привязок).

Да я его и использую, о чём и написано выше, в дизайнтайме всё работает, но когда запускаю программу этот компонент игнорирует привязки.

А как же ваше "в дизайнере форм свойство Anchorrs редактируется". Это вовсе не редактор привязок.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Компоненты и примеры

Сообщение qivi » 11.05.2012 12:21:37

А какой ни будь компонент Lazarus умеет вот так:
sdsdsf.jpg

(Таблица со встроенным трейвиевером)
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Компоненты и примеры

Сообщение Brainenjii » 11.05.2012 12:24:08

VirtualTree так умеет
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Компоненты и примеры

Сообщение qivi » 11.05.2012 12:28:57

Что то нету у меня такого
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Компоненты и примеры

Сообщение Brainenjii » 11.05.2012 13:26:04

Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Компоненты и примеры

Сообщение lSpyHunterl » 31.05.2012 10:59:21

Модуль для упрощения создания интерфейса аля IBExpert SDI

Писался и тестировался на
Lazarus 0.9.30.4-0
FPC 2.6.0
KUbuntu 12.04 x86-64

Код: Выделить всё
unit uToolButtonShowForm;

{
Класс отображает на ToolBar кнопку, управляющую заданной формой.
Когда форма создана, кнопка появляется на панели. Форма активна - кнопка нажата
Down = true. Форма не активна - кнопка отжата Down = false.

С помощью этого модуля реализуется интерфейс аля IBExpert SDI.

Как это работает:

Положите на главную форму ToolBar и задайте свойство ShowCaptions = true.

Авто создание форм отключите. Вызывайте вторичные формы созданием
что-то вроде

---
  if fSecondaryForm = nil then                                    //(1)
    fSecondaryForm := TfSecondaryForm.Create(Application);
  fSecondaryForm.Show;
---

В событии вторичной формы OnClose пропишите

---
procedure TfSecondaryForm.Close(Sender: TObject; CloseAction: TCloseAction);
begin
//...
  CloseAction := caFree;
end;
---

для того, чтобы при закрытии форма разрушалась. В методе Destroy пропишите

---
procedure TfSecondaryForm.Destroy(Sender: TObject);
begin
//...
  fSecondaryForm := nil;
end;
---

для того, чтобы при последующем вызове этой формы сработало условие (1)

в раздел uses модуля вторичной формы добавьте модуль uToolButtonShowWindow
к описанию класа формы добавьте поле например ToolButton: TswToolButton;

для создания кнопки используйте конструктор

CreateSWToolButton(Sender: TComponent; const AForm: TForm;
  AParrent: TWinControl);

в Sender передайте какой-нибудь компотент на форме, например панель или еще
что-то, не важно, главное, чтобы будущяя кнопка была привязана к чему-то на
форме, чтобы при разрушении формы, а значит и разрушении этого компонента,
кнопка тоже разрушилась.

в AForm передайте TForm(Self), будущая кнопка подхватит Caption формы, сохранит
методы формы OnDeactivate и OnActivate, если они назначены, и назначит форме
свои методы OnDeactivate и OnActivate в которых перед собственными действиями
вызовет методы формы.

При разрушении кнопка вернет методы формы на место.

В AParrent передайте ToolBar на главной форме, на котором и будет отображаться
эта кнопка.

Создавайте кнопку на ToolBar при создании формы

---
procedure TfSecondaryForm.Create(Sender: TObject);
begin
  ToolButton := TswToolButton.CreateSFToolButton(Panel {Edit, Grid не фажно},
    TForm(Self), FirstForm.ToolBar);
//...
end;
---

Если открыто несколько форм с такими кнопками, то на панели ToolBar будет этих
кнопок несколько. Нажата будет та, форма которой активна, или если не активна ни
одна из форм, то не будет нажата ни одна кнопка. При нажатии на любую из них
будет активирована форма, которой кнопка принадлежит.
}

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, ComCtrls, Forms, Controls //,Dialogs
;

type
  TOnProcedure = procedure (Sender: TObject) of object;

type
  TsfToolButton = class (TToolButton)
    private
      FForm: TForm;                         //Знает какой формой управлять
      FDeactivate: TOnProcedure;            //Сохраняет метод формы OnDeactivate
      FActivate: TOnProcedure;              //Сохраняет метод формы Activate
      procedure swToolButtonClick(Sender: TObject); //Активирует форму
      procedure ReturnForm;                         //Возвращает форме методы
      procedure FormOnDeactivate(Sender: TObject);  //Назначается методу формы
      procedure FormOnActivate(Sender: TObject);    //Назначается методу формы
    public
      constructor Create(Sender: TComponent); override;
      constructor CreateSfToolButton(Sender: TComponent; const AForm: TForm;
        AParrent: TWinControl);
      destructor Destroy; override;
      procedure SetForm(const AForm: TForm);
    published
      property Form: TForm read FForm write SetForm default nil;
  end;

implementation

constructor TsfToolButton.Create(Sender: TComponent);
begin
  inherited;
  Style := tbsCheck;
  Down := true;
  OnClick := @swToolButtonClick;
end;

constructor TsfToolButton.CreateSfToolButton(Sender: TComponent;
  const AForm: TForm; AParrent: TWinControl);
begin
  Create(Sender);
  Parent := AParrent;
  SetForm(AForm);
end;

destructor TsfToolButton.Destroy;
begin
  ReturnForm;
//  ShowMessage('ToolButton: ' + #10 + '  - Я Умер');
  inherited;
end;

procedure TsfToolButton.swToolButtonClick(Sender: TObject);
begin
  if FForm <> nil then
    FForm.SetFocus;
end;

procedure TsfToolButton.FormOnDeactivate(Sender: TObject);
begin
  if FDeactivate <> nil then
    FDeactivate(Sender);
  Down := false;
end;

procedure TsfToolButton.FormOnActivate(Sender: TObject);
begin
  if FActivate <> nil then
    FActivate(Sender);
  Down := true;
end;

procedure TsfToolButton.ReturnForm;
begin
  FForm.OnDeactivate := FDeactivate;
  FForm.OnActivate := FActivate;
  FForm := nil;
end;

procedure TsfToolButton.SetForm(const AForm: TForm);
var
  s: String;
begin
  if FForm <> nil then
    ReturnForm;

  if AForm <> nil then begin
    FForm := AForm;
    s := FForm.Caption;
    Caption := s;
    FDeactivate := FForm.OnDeactivate;
    FForm.OnDeactivate := @FormOnDeactivate;

    FActivate := FForm.OnActivate;
    FForm.OnActivate := @FormOnActivate;
  end;
end;

end.


может когда-нибудь доведу до компонента, пока времени нехват
У вас нет необходимых прав для просмотра вложений в этом сообщении.
lSpyHunterl
незнакомец
 
Сообщения: 1
Зарегистрирован: 31.05.2012 09:59:00

Re: Компоненты и примеры

Сообщение CynicRus » 10.07.2012 09:23:15

Компонент TSelectOnRuntime, давеча портировал под лазарус. Размещаю с разрешения автора(см. вложение)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось CynicRus 10.07.2012 11:05:27, всего редактировалось 1 раз.
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: Компоненты и примеры

Сообщение v-t-l » 10.07.2012 10:54:01

Нужно заменить
Код: Выделить всё
Windows, Messages
на
Код: Выделить всё
LCLIntf, LCLType
и компонент становиться кроссплатформенным - проверено в Lazarus 1.1 r36901 FPC 2.6.0 x86_64-linux-gtk 2
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Компоненты и примеры

Сообщение Dave_Murey » 12.07.2012 19:29:21

Подскажите пожалуйста, как сделать заголовки перенос слов в TStringGrid, когда большой их размер?
Пробовал примеры с различных сайтов по Делфи, но ничего из предложенных вариантов не работает. :(
Dave_Murey
незнакомец
 
Сообщения: 5
Зарегистрирован: 23.06.2012 22:02:05

Re: Компоненты и примеры

Сообщение CynicRus » 04.11.2012 13:10:04

Пример создания дизайнера форм с генерацией паскаль-скрипт кода:
https://github.com/CynicRus/smbFrmDesigner[Win\Lin]

Пример создания аналога менеджера пакетов(работает с tar.bz2):
https://github.com/SRL/ScriptManager[Win\Lin]

Буду благодарен за критику кода-)
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru