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

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

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

Ответить
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

http://mirrors.iwi.me/lazarus/ в архиве с исходниками в папке components :D
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

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

Ой-ей - не надо - лучшее- враг хорошего :( :( :(
Попробовал обновить только лазрепорт - лучше бы это не делал...
Во всех отчетах в Memo оказалась вбитой западная кодировка символов, отчет перезаписался - и вместо русских букв встали знаки ?????
Хорошо, что копия отчетов была :oops:
Кстати, это стало тянуться и в лазаре из svn версии более 33000 - вот на ней и сижу...
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

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

Добавлено спустя 10 часов 15 минут 30 секунд:
Люди человеки... помогите пожалуйста советом добрым :)
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

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

Сообщение qivi »

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

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

Сообщение sign »

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

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

А как же ваше "в дизайнере форм свойство Anchorrs редактируется". Это вовсе не редактор привязок.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

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

Сообщение Brainenjii »

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

Сообщение qivi »

Что то нету у меня такого
lSpyHunterl
незнакомец
Сообщения: 1
Зарегистрирован: 31.05.2012 09:59:00

Сообщение lSpyHunterl »

Модуль для упрощения создания интерфейса аля 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.


может когда-нибудь доведу до компонента, пока времени нехват
У вас нет необходимых прав для просмотра вложений в этом сообщении.
CynicRus
постоялец
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Сообщение CynicRus »

Компонент TSelectOnRuntime, давеча портировал под лазарус. Размещаю с разрешения автора(см. вложение)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось CynicRus 10.07.2012 11:05:27, всего редактировалось 1 раз.
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Нужно заменить

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

Windows, Messages
на

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

LCLIntf, LCLType
и компонент становиться кроссплатформенным - проверено в Lazarus 1.1 r36901 FPC 2.6.0 x86_64-linux-gtk 2
Dave_Murey
незнакомец
Сообщения: 5
Зарегистрирован: 23.06.2012 22:02:05

Сообщение Dave_Murey »

Подскажите пожалуйста, как сделать заголовки перенос слов в TStringGrid, когда большой их размер?
Пробовал примеры с различных сайтов по Делфи, но ничего из предложенных вариантов не работает. :(
CynicRus
постоялец
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Сообщение CynicRus »

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

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

Буду благодарен за критику кода-)
Ответить