跪求了,可有高人
解决方案 »
- 请教大侠一个关于delphi7 Excel文档导入的问题
- 请教UrlDownloadToFile支持进度条
- 等待程序执行完,为什么主程序假死。
- 远程客户端在注册时,注册信息保存在SQL Server 里的表中,在读出注册信息时,有“个别”用户信息会出现乱码现象,请问是怎么会事?急!
- 截取字符串长度的问题
- what is bho? 它做什么用??
- 如何控制DBGrid的列不允许使用鼠标拖动而改变列的顺序?
- 在DbGrid中,不按下Ctrl,单击鼠标如何实现多选?谢谢
- 有关delphi数据库的问题,大家快来呀,很有意思的,我没分给,对不起大家
- 怎样编写支持多国语言的程序
- 難到至今都還沒有人用DELPHI獲取過ACCESS數據庫字段的說明嗎
- cxgrid 计数问题请教
你只能设置Font。
然后在用到的时候,补充完整。
不就是<a href='XXXX'>XXXX</a>嘛。
数据库多加一个字段,把实际的URL保存进去。
我用的是DEV系列控件
实现方法是从TcxDBTextEdit派生出TMyDBHyperLinkTextEdit,源码看下方
unit MyDBHyperLinkEdit;interface
uses Variants, Windows, SysUtils, Messages, Controls, Forms, Classes, Dialogs,
Graphics, DB, cxDBEdit, cxEdit, cxDataUtils;type
TMyDBHyperLinkEditDataBinding = class(TcxDBTextEditDataBinding)
private
FHyperLinkText,
FHyperLink,
FText: string;
FRecNo: integer;
FColor: TColor;
FCursor: TCursor;
FTextStyle: TFontStyles;
FOnDblClick: TNotifyEvent;
function IsvalidHyperLink(const aHyperLink: string): boolean;
function ParseHyperLink(const aHyperLink: string; var HyperLink, Text: string): boolean;
procedure OnDblClick(Sender: TObject);
protected
procedure SetDisplayValue(const Value: TcxEditValue); override;
procedure DataChanged; override;
procedure UpdateData; override;
public
constructor Create(AEdit: TcxCustomEdit); override;
property HyperLink: string read FHyperLink;
property HyperLinkAndText: string read FHyperLinkText;
end; TMyDBHyperLinkTextEdit = class(TcxDBTextEdit)
private
protected
class function GetDataBindingClass: TcxEditDataBindingClass; override;
public
end;implementationuses ShellAPI;type
TcxCustomEditAccess = class(TcxCustomEdit);{ TMyDBHyperLinkEditDataBinding }constructor TMyDBHyperLinkEditDataBinding.Create(AEdit: TcxCustomEdit);
begin
inherited;
FColor := AEdit.Style.TextColor;
FTextStyle := AEdit.Style.TextStyle;
FCursor := AEdit.Cursor;
FOnDblClick := AEdit.OnDblClick;
AEdit.OnDblClick := OnDblClick;
end;procedure TMyDBHyperLinkEditDataBinding.DataChanged;
begin
if IsRefreshDisabled then
Exit;
if Edit.IsDesigning and not IsDataAvailable then
UpdateNotConnectedDBEditDisplayValue
else
begin
if not TcxCustomEditAccess(Edit).Focused and
Edit.ActiveProperties.IsValueEditorWithValueFormatting then
begin
if not IsDataAvailable or IsNull then
TcxCustomEditAccess(Edit).FEditValue := Null
else
TcxCustomEditAccess(Edit).FEditValue := Field.Value;
Edit.LockClick(True);
try
SetInternalDisplayValue(StoredValue);
finally
Edit.LockClick(False);
end;
end
else begin
FHyperLink := '';
if StoredValue=null then
FText := ''
else
FText := StoredValue;
if not (StoredValue=null) and IsvalidHyperLink(StoredValue) then
ParseHyperLink(Field.Value, FHyperLink, FText);
if FHyperLink='' then
Edit.EditValue := Format('<a href="http://">%s</a>', [FText])
else
Edit.EditValue := FText;
end;
end; Edit.Hint := Format('http://%s', [FHyperLink]);
Edit.Style.TextColor := FColor;
Edit.Cursor := FCursor;
Edit.Style.TextStyle := FTextStyle;
if FHyperLink<>'' then
begin
Edit.Style.TextColor := clBlue;
Edit.Style.TextStyle := FTextStyle + [fsUnderline];
Edit.Cursor := crHandPoint;
end;
end;function TMyDBHyperLinkEditDataBinding.IsvalidHyperLink(const aHyperLink: string): boolean;
var
tmp: string;
begin
//'<a href="http://www.163.com">网易主页</a>'
tmp := LowerCase(aHyperLink);
result := (Copy(tmp, 1, 16)='<a href="http://') and (Copy(tmp, Length(tmp)-3, 4)='</a>') and (Pos('">', aHyperLink)>0);
end;procedure TMyDBHyperLinkEditDataBinding.OnDblClick(Sender: TObject);
begin
if HyperLink<>'' then
ShellExecute(Application.Handle, 'open', PWideChar('http://'+HyperLink), nil, nil, SW_SHOWNORMAL);
if Assigned(FOnDblClick) then
FOnDblClick(Sender);
end;function TMyDBHyperLinkEditDataBinding.ParseHyperLink(const aHyperLink: string;
var HyperLink, Text: string): boolean;
var
tmp: string;
begin
result := false;
if IsvalidHyperLink(aHyperLink) then
begin
tmp := aHyperLink;
Delete(tmp, 1, 16);
Delete(tmp, Pos('</a>', tmp), 4);
HyperLink := Copy(tmp, 1, Pos('">', tmp)-1);
text := Copy(tmp, Pos('">', tmp)+2, Length(tmp));
result := true;
end;
end;procedure TMyDBHyperLinkEditDataBinding.SetDisplayValue(
const Value: TcxEditValue);
begin
if IsDataAvailable then
begin
if not Edit.Focused and self.Editing and (FHyperLink<>'') then
SetInternalDisplayValue(Format('<a href="http://%s">%s</a>', [FHyperLink, Value]))
else
SetInternalDisplayValue(Value)
end
else
if Edit.IsDesigning then
SetInternalDisplayValue(Edit.Name)
else
SetInternalDisplayValue('');
end;procedure TMyDBHyperLinkEditDataBinding.UpdateData;
begin
if IsDataAvailable then
begin
if Edit.ValidateEdit(True) then
begin
StoredValue := Edit.EditValue;
if not (Edit.EditValue=null) and not IsvalidHyperLink(Edit.EditValue) then
StoredValue := Format('<a href="http://%s">%s</a>', [FHyperLink, Edit.EditValue]);
end;
end;
end;{ TMyDBHyperLinkEdit }class function TMyDBHyperLinkTextEdit.GetDataBindingClass: TcxEditDataBindingClass;
begin
result := TMyDBHyperLinkEditDataBinding;
end;end.
软件
真心想找你完善这个软件,如何???我薪水不多(都是中国老百姓,你也知道的),价钱给小弟大优惠下,但是你放心我是靠得住的人,以后我会找项目给你做的,不收钱的
希望你能联系我下,咱们谈下需求这块,另外软件使用的SQL Server 2000服务器在内网,不要使用路由器端口映射的方法,可以使用吗?