Новые книги

Эта книга об экстремальном программировании. Экстремальное программирование, часто обозначаемое аббревиатурой «XP» – это упрощенная методика организации производства для небольших и средних по размеру команд разработчиков, занимающихся разработкой программного продукта в условиях неясных или быстро меняющихся требований. Данная книга предназначена для того, чтобы помочь вам определить, оправдано ли применение XP в вашей ситуации...
Розничные компании и их Private labels, т. е. собственные торговые марки, завоевывают новые ниши на рынке. Но производители традиционных брендов по-прежнему создают стратегии, основанные на отживших мифах и представлениях о собственных марках розничных сетей. Если производители традиционных брендов не хотят проиграть, им жизненно необходим совершенно другой подход. Авторы книги развенчивают устойчивые мифы о марках розничных сетей, описывают новые, многоуровневые стратегии, которые розничные сети используют в отношении собственных марок, и предлагают производителям разработать эффективные ответные меры. Авторы призывают производителей принять брошенный вызов и идти в атаку! Основанная на исследовании эмпирического материала, собранного в разных странах мира, и на беспрецедентном обзоре мнений потребителей и анализе статистики книга содержит стратегии действий и производителей, и торговых сетей. Авторы предоставляют инструментарий, который поможет успешно конкурировать – или сотрудничать – с поставщиками товаров под марками розничных сетей; объясняют, почему сейчас производители традиционных брендов должны считаться с марками розничных сетей. Книга будет интересна руководителям производственных и торговых компаний, маркетологам, экспертам. Читатели найдут в книге много интересных фактов об известных магазинах и товарах.

Многострочная подсказка (Hints)


Как "быструю подсказку" (Hints) сделать многострочной?

Необходимо создать соответствующую компоненту которая показывает "быструю подсказку" (Hints) с более чем одной строкой. Компонента наследуется от TComponent и называется TMHint. Hint-текст можно задавать следующим образом: "Строка 1@Строка 2@Строка 3". Символ '@' используется как разделитель строк. Если Вам нравится другой символ - измените свойство Separator. Свойство Active указывает на активность (TRUE) или неактивность (FALSE) "многострочности".

unit MHint;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages,
  Classes, Graphics, Controls, Forms, Dialogs;

type
  TMHint = class(TComponent)
  private
    ScreenSize: Integer;
    FActive: Boolean;
    FSeparator: Char;
    FOnShowHint: TShowHintEvent;
  protected
    procedure SetActive(Value: Boolean);
    procedure SetSeparator(Value: char);
    procedure NewHintInfo(var HintStr: string; 
      var CanShow: Boolean;
      var HintInfo: THintInfo);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Active: Boolean
      read FActive write SetActive;
    property Separator: Char
      read FSeparator write SetSeparator;
  end;

procedure Register;

implementation

constructor TMHint.Create(AOwner: TComponent);

begin
  inherited Create(AOwner);
  FActive := True;
  FSeparator := '@';
  Application.OnShowHint := NewHintInfo;
  ScreenSize := GetSystemMetrics(SM_CYSCREEN);
end;

procedure TMHint.SetActive(Value: Boolean);

begin
  FActive := Value;
end;

procedure TMHint.SetSeparator(Value: Char);

begin
  FSeparator := Value;
end;

procedure TMHint.NewHintInfo(var HintStr: string; 
  var CanShow: Boolean;
  var HintInfo: THintInfo);

var 
  I: Byte;

begin
  if FActive then
    begin
      I := Pos(FSeparator, HintStr);
      while I > 0 do
        begin
          HintStr[I] := #13;
          I := Pos(FSeparator, HintStr);
        end;
      if HintInfo.HintPos.Y+10 > ScreenSize then
        HintInfo.HintPos.Y := ScreenSize-11;
    end;
end;

procedure Register;

begin
  RegisterComponents('MyComponents', [TMHint]);
end;

end.


Или вот ещё пример.


Оглавление