Наши преимущества

Компоненты к Delphi (каталог ссылок) 5

Статус
Закрыто для дальнейших ответов.
RapidShare link please


would you please give a RapidShare link please (mediafire is filtered in Iran)

Добавлено через 1 минуту
TMS Component pack v6.0.2.0 : update Mar 26, 2011

*** скрытый текст *** :D

Whould you please give a rapidshare link please (megaupload is filtered in Iran)
 
Последнее редактирование модератором:
Small fixes for VirtualTree 4.8.5

On line 23580 (near the end of procedure HandleMouseDown - just before Drag'n'Drop initiation) add these:
Код:
  else
  begin
  	ClearSelection;
  	SetFocusedNode(NIL);
  end;
  // end of fix
this is needed to properly emulate TListView behaviour - clicking nowhere in the client area
deselects and removes focus rectangle.

---------------------------------------------------------------------------

On line 19095 (end of procedure WMRButtonUp) add ELSE clause to the IF:
PHP:
  if not Assigned(PopupMenu) then
    DoPopupMenu(HitInfo.HitNode, HitInfo.HitColumn, Point(Message.XPos, Message.YPos))
  Else
    Inherited; // fix by IVO GELOV
and comment-out the INHERITED keyword on line 19085 (because otherwise PopUp is shown before the selection is updated, which is wrong)

---------------------------------------------------------------------------

Commented-out all BF_MIDDLE occurencies, since with this flag DrawEdge uses system default color, instead of current Brush.

---------------------------------------------------------------------------

On line 23405 in procedure HandleMouseDown, add this:
PHP:
  if toSimpleDrawSelection in FOptions.FSelectionOptions then 
  	IsHit := false 
  else
  	IsHit := not AltPressed and ((hiOnItemLabel in HitInfo.HitPositions) or (hiOnNormalIcon in HitInfo.HitPositions));

---------------------------------------------------------------------------

On line 8873 replace

if FCaptionText = '' then FCaptionText := FText;

with
PHP:
	FCaptionText := WrapString(DC, FText, R, DT_RTLREADING and DrawFormat <> 0, DrawFormat);

on line 9120 in the end of procedure ComputeHeaderLayout, delete

R := TextBounds;

and replace "R" with "TextBounds" in the parameter list of the next 2 commmands.

this is needed, because otherwise if header column is coWrapCaption - it is painted as single line until the very first MouseLeave from any header column.

---------------------------------------------------------------------------

On line 8364 in AdjustColumnIndex

insert the following as the outer block:
PHP:
    // this fix is for the case when one form inherits from another form, 
    // but VirtualTree columns are different on both forms - in this case
    // TFiler CLEARS the column collection, and we come here
    H:=TVirtualTreeColumns(Collection).FHeader;
    if not (csLoading in H.Treeview.ComponentState) and not (hsLoading in H.FStates) then
    begin
      ......
    end;

Добавлено через 7 минут
frxBarcode.pas
PHP:
procedure TfrxBarCodeView.GetData;
begin
  inherited;
  if IsDataField then
    FText := VarToStr(DataSet.Value[DataField,Self]) // IVO GELOV - added Self
  else if FExpression <> '' then
    FText := VarToStr(Report.Calc(FExpression));
end;

frxChBox.pas
PHP:
procedure TfrxCheckBoxView.GetData;
var
  v: Variant;
begin
  inherited;
  if IsDataField then
  begin
    v := DataSet.Value[DataField,Self]; // IVO GELOV - added Self
    if v = Null then
      v := False;
    FChecked := v;
  end
  else if FExpression <> '' then
    FChecked := Report.Calc(FExpression);
end;

frxRich.pas
PHP:
procedure TfrxRichView.GetData;
........
    if DataSet.IsBlobField(DataField) then
    begin
      ss := TStringStream.Create('');
      DataSet.AssignBlobTo(DataField, ss)
    end
    else
      ss := TStringStream.Create(VarToStr(DataSet.Value[DataField,Self])); // IVO GELOV - added Self
    try
      FRichEdit.Lines.LoadFromStream(ss);
    finally
      ss.Free;
    end;
.......

frxEngine.pas
PHP:
procedure TfrxEngine.Stretch(Band: TfrxBand);
.........
        {if c is TfrxStretcheable then
          TfrxStretcheable(c).StretchMode := smDontStretch;} // IVO GELOV - bugfix
.........

frxClassRTTI.pas
PHP:
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
  const MethodName: String; Caller: TfsMethodHelper): Variant;
..............
    else if MethodName = 'VALUE.GET' then
      Result := _TfrxDataSet.Value[Caller.Params[0],Instance] // IVO GELOV - added Instance
.........

frxDBSet.pas
PHP:
function TfrxDBDataset.GetValue(Index: String; Obj:TObject): Variant; // IVO GELOV - added Obj

frxCross.pas
PHP:
procedure TfrxDBCrossView.FillMatrix;
......
          RowValues[i] := DataSet.Value[FRowFields[i],Self] // IVO GELOV - added Self
.....
          ColumnValues[i] := DataSet.Value[FColumnFields[i],Self] // IVO GELOV - added Self
.........
          CellValues[i] := DataSet.Value[FCellFields[i],Self] // IVO GELOV - added Self

frxClass.pas
PHP:
  TfrxDataSet = class(TfrxDialogComponent)
  protected
    function GetValue(Index: String; Obj:TObject): Variant; virtual; // IVO GELOV - added Obj
  public
    property Value[Index: String; Obj:Tobject]: Variant read GetValue; // IVO GELOV - added Obj
  end;

  TfrxUserDataSet = class(TfrxDataset)
  protected
    function GetValue(Index: String; Obj:TObject): Variant; override;// IVO GELOV - added Obj
  end;

  TfrxReport = class(TfrxComponent)
  private
    function DoGetValue(Instance:TObject; const Expr: String; var Value: Variant): Boolean; // IVO GELOV - added Instance

function TfrxUserDataSet.GetValue(Index: String; Obj:TObject): Variant; // IVO GELOV - added Obj
begin
  Result := Null;
  if Assigned(FOnGetValue) then
    FOnGetValue(Index, Result);
  if Assigned(FOnNewGetValue) then
    FOnNewGetValue({Self}Obj, Index, Result); // IVO GELOV - Self is useless, Obj is the object which requests data
end;

procedure TfrxCustomMemoView.GetData;
........
    begin
      FValue := DataSet.Value[DataField,Self]; // IVO GELOV - added Self
      if FDisplayFormat.Kind = fkText then
      begin
        if LocCharset then
          FMemo.Text := AnsiToUnicode(AnsiString(DataSet.DisplayText[DataField]), Font.Charset) else
          FMemo.Text := DataSet.DisplayText[DataField];
      end
........
end;

function TfrxReport.Calc(const Expr: String; AScript: TfsScript = nil): Variant;
.........
  if not DoGetValue(NIL, Expr, Result) then // IVO GELOV - added NIL
.......
end;

function TfrxReport.DoGetValue(Instance:TObject; const Expr: String; var Value: Variant): Boolean; // IVO GELOV - added Instance
.............
  if (ds <> nil) and (fld <> '') then
  begin
    Value := ds.Value[fld,Instance]; // IVO GELOV - added Instance
...........
end;

function TfrxReport.GetScriptValue(Instance: TObject; ClassType: TClass;
  const MethodName: String; var Params: Variant): Variant;
var
  i: Integer;
  s: String;
begin
  if not DoGetValue(Instance, Params[0], Result) then // IVO GELOV - added Instance
..........
end;

The only real "bug" is in frxEngine - in original, the stretching of sub-reports is intentionally disabled. I needed this stretching, so I forcibly re-enabled it.
Other fix is just to provide a usable Sender value in the event TfrxUserDataset.OnNewGetValue(Sender: TObject; const VarName: string; var Value: Variant) - in original, Sender is equal to TfrxDataset.Self but this is useless, so I modified it to point to the real object (usually TfrxMemoView) requesting a Value.
 
Последнее редактирование модератором:
Статус
Закрыто для дальнейших ответов.
Верх