📄 iwtmschecklist.pas
字号:
for i := 1 to FList.Count do
begin
if pos(', '+ flist.Strings[i - 1]+',',s) > 0 then
Selected[i - 1] := true;
end;
end;
procedure TTIWCheckList.SetDropDownFont(const Value: TIWFont);
begin
FDropDownFont.Assign(Value);
end;
{$IFDEF TMSIW6}
function TTIWCheckList.RenderHTML(AContext: TIWBaseComponentContext): TIWHTMLTag;
{$ELSE}
function TTIWCheckList.RenderHTML: TIWHTMLTag;
{$ENDIF}
var
htmlres: string;
i: Integer;
gradient, fontstyle, fontstyleDD: string;
_sChkAll, _sUnChkAll, _hsChkAll, _hsUnChkAll, caScript, caLabeltext, caHinttext, scrollh: string;
allchecked: string;
redscroll: integer;
function MakeAlign(AAlignment: TAlignment):string;
begin
Result := '';
case AAlignment of
taRightJustify: Result := ' style=text-align:right;';
taCenter: Result := ' style=text-align:center;';
end;
end;
function MakeScript(Name:string): string;
begin
Result :=
'<Script Language="JavaScript">'#13
+ ' var dohide = 0;'
+ 'function '+HTMLName+'showdiv(){ '#13
+ ' if (document.getElementById("'+HTMLName+'checklist").style.visibility == "hidden"){'#13
+ ' document.getElementById("'+HTMLName+'checklist").style.visibility = "visible";'#13
+ ' document.onmouseup = '+HTMLName+'docMouseUp;'#13
+ ' }else {'#13
+ ' document.getElementById("'+HTMLName+'checklist").style.visibility = "hidden";'#13
+ ' } '#13
+ '} '#13
+ ' function '+HTMLName+'docMouseUp(){ '#13
+ ' if (dohide == 0) {'#13
+ ' document.getElementById("'+HTMLName+'checklist").style.visibility = "hidden";'#13
+ ' document.onmouseup = "";'#13
+ ' } else {'#13
+ ' dohide = 0; '#13
+ ' } '#13
+ '} '#13
+ 'function '+HTMLName+'resetdoc(){'#13
+ ' dohide = 1; '#13
+ '}'#13
+ 'function '+HTMLName+'UpdateList(){'#13
+ ' var editor = document.getElementById("'+HTMLName+'ED");'#13
+ ' editor.value = "";'#13
+ ' for (i=0;i<'+IntToStr(FList.Count)+';i++){'#13
+ ' boxid = "'+HTMLName+'box" + i;'#13
+ ' if (document.getElementById(boxid).checked)'#13
+ ' editor.value += document.getElementById(boxid).value + ", ";'#13
+ ' }'#13
+ ' editor.value = editor.value.substr(0,editor.value.length-2);'#13
+ '}'#13
+ 'function ' + HTMLName + 'Focus(ctrl) {'#13;
if FFocusColor <> FColor then
Result := Result
+ 'ctrl.style.backgroundColor = '#39+HTMLClr(FFocusColor)+#39''#13;
if FSelectAll then
Result := Result
+ 'var rNew = ctrl.createTextRange();'#13
+ 'rNew.moveStart('#39'character'#39', 0) ;'#13
+ 'rNew.select();'#13;
Result := Result
+ '}'
+ '</Script>';
end;
function StripCRLF(s:string): string;
begin
while pos(#13,s) > 0 do
delete(s,pos(#13,s),1);
while pos(#10,s) > 0 do
delete(s,pos(#10,s),1);
Result := s;
end;
begin
fontstyleDD := '';
allchecked := 'true';
if FSelected.Count < Items.Count then
allchecked := 'false';
_sChkAll := '';
_sUnChkAll := '';
_hsChkAll := '';
_hsUnChkAll := '';
scrollh := IntToStr(Height);
if ((CheckAllBox) and (CheckAllHelp = htLabel)) then
begin
_sChkAll := CheckAllText;
_sUnChkAll := UnCheckAllText;
end;
if ((CheckAllBox) and (CheckAllHelp = htHint)) then
begin
_hsChkAll := CheckAllText;
_hsUnChkAll := UnCheckAllText;
end;
caScript := '<Script Language="JavaScript">'#13
+ ' var '+HTMLName+'allchecked = '+allchecked+'; '#13
+ ' function '+HTMLName+'UpdateList(){'#13
+ ' var editor = document.getElementById("'+HTMLName+'ED");'#13
+ ' editor.value = "";'#13
+ ' for (i=0;i<'+IntToStr(Items.Count)+';i++){'#13
+ ' boxid = "'+HTMLName+'box" + i;'#13
+ ' if (document.getElementById(boxid).checked)'#13
+ ' editor.value += document.getElementById(boxid).value + ", ";'#13
+ ' }'#13
+ ' editor.value = editor.value.substr(0,editor.value.length-2);'#13
+ '} '#13#13
+ 'function '+HTMLName+'CheckAll(){'#13
+ ' if ('+HTMLName+'allchecked){ '#13
+ ' for (var i=0;i<'+IntToStr(Items.Count)+';i++){ '#13
+ ' boxid = "'+HTMLName+'box" + i;'#13
+ ' document.getElementById(boxid).checked = false; }'#13
+ ' '+HTMLName+'allchecked = false; '#13
+ ' document.getElementById("'+HTMLName+'labeltext").innerHTML = "'+_sChkAll+'"; '#13
+ ' document.getElementById("'+HTMLName+'boxCA").title = "'+_hsChkAll+'"; '#13
+ ' } else { '#13
+ ' for (var i=0;i<'+IntToStr(Items.Count)+';i++){ '#13
+ ' boxid = "'+HTMLName+'box" + i;'#13
+ ' document.getElementById(boxid).checked = true; }'#13
+ ' document.getElementById("'+HTMLName+'labeltext").innerHTML = "'+_sUnChkAll+'"; '#13
+ ' document.getElementById("'+HTMLName+'boxCA").title = "'+_hsUnChkAll+'"; '#13
+ ' '+HTMLName+'allchecked = true; '#13
+ ' } '#13
+ ' '+HTMLName+'UpdateList(); '#13
+ '} '#13
+ '</Script>'#13;
if (PopUpColor <> clNone) and (PopUpColorTo <> clNone) then
gradient := ' background:'+HTMLClr(FPopUpColor)+';FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=' +
IntToStr(1 - Integer(PopUpColorGradientDirection)) + ', StartColorStr='#39
+ HTMLClr(PopUpColor) + #39', EndColorStr='#39 + HTMLClr(PopUpColorTo) + #39');'
else
gradient := ' background:'+HTMLClr(FPopUpColor)+';';
if (Font.FontVariant = '') then
begin
{$IFDEF TMSIW6}
// fontstyle := ' style="' + Font.FontToStringStyle(AContext.WebApplication.Browser) + '"';
fontstyle := Font.FontToStringStyle(AContext.WebApplication.Browser);
{$ELSE}
// fontstyle := ' style="' + Font.FontToStringStyle(WebApplication.Browser) + '"';
fontstyle := Font.FontToStringStyle(WebApplication.Browser);
{$ENDIF}
end;
if (DropDownFont.FontVariant = '') then
begin
{$IFDEF TMSIW6}
fontstyleDD := DropDownFont.FontToStringStyle(AContext.WebApplication.Browser);
{$ELSE}
fontstyleDD := DropDownFont.FontToStringStyle(WebApplication.Browser);
{$ENDIF}
end;
htmlres := caScript + MakeScript(HTMLName);
htmlres := htmlres
+ '<style>.testmystyle {font-family:"Verdana";font-size:15pt}</style>'#13
+ '<table cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse"><tr>'#13
+ ' <td rowspan="2">'#13
+ ' <input type=' + IIF(FPasswordPrompt, 'password', 'input') + ' name="' + HTMLName +'"' + ' class="'+font.FontVariant+'" id="' + HTMLName +'ED"'
+ IIF(MaxLength > 0, ' maxlength=' + IntToStr(MaxLength))
+ ' style="' + fontstyle + ' width:' + inttostr(width-50) + 'px'
+ IIF(FFlat, ' border-style:solid;border-width:'+inttostr(FBorderWidth)+ 'px;border-color:'+HTMLClr(FBorderColor)+';')
+ '"'
+ ' size=' + IntToStr((Width div 7)-5)
+ ' value="' + Text + '"'
+ IIF(ReadOnly, ' readonly', '')
// + ' style="width:'+inttostr(width-50)+';'
// + IIF(FFlat, ' border-style:solid;border-width:'+inttostr(FBorderWidth)+ 'px;border-color:'+HTMLClr(FBorderColor)+';')
// + '"'
+ ' onKeyPress="return false;"'
+ IIF(FAlignment <> taLeftJustify,MakeAlign(FAlignment))
+ IIF(FColor <> clWindow, ' style="background-color:'+HTMLClr(FColor)+'";')
+ ' onFocus="'+HTMLName+'Focus(this)";'
+ iif(FFocusColor <> FColor,' this.style.backgroundColor = '#39+HTMLClr(FColor)+#39';','')
+ '"'#13
+ '>'
+ '<BUTTON type="button" value="..." onclick="'+HTMLName+'showdiv()"'
+ ' style="width:18px;height:22px;vertical-align:middle;text-align:center;padding:0px;top:-3;position:relative;">'
+ '<DIV style=" font-family:Webdings;font-size:9pt;margin:0px;padding:0px;border:0px;margin-top:-0.2em;margin-right:-0.1em;">'
+ ' <font face="webdings">6</font></DIV></BUTTON>'
+ '<br>';
htmlres := htmlres
+ '<div class="'+font.FontVariant+'" onMouseDown="'+HTMLName+'resetdoc();" id="'+HTMLName
+'checklist" style="visibility:hidden; position:absolute; '+gradient
+ 'border-color:#000000;border-width:1px;border-bottom:2 outset;border-right:2 outset;border-style:solid;padding:2px;'
+ IIF(PopUpWidth > 0, ' width:'+IntToStr(PopUpWidth)+'px;', '')
+ IIF(PopUpHeight > 0, ' height:'+IntToStr(PopUpHeight)+'px;overflow:auto;', '')
// + fontstyle
+ fontstyleDD
+ '">';
if ( (CheckAllBox) and (Items.Count > 0)) then
begin
redscroll := Height - 20;
scrollh := IntToStr(redscroll);
caLabeltext := '';
caHinttext := '';
if (allchecked = 'false') then
begin
if (CheckAllHelp = htLabel) then
caLabeltext := CheckAllText
else if (CheckAllHelp = htHint) then
caHinttext := CheckAllText;
end
else
begin
if (CheckAllHelp = htLabel) then
caLabeltext := UnCheckAllText
else if (CheckAllHelp = htHint) then
caHinttext := UnCheckAllText;
end;
htmlres := htmlres
+ '<div>'
+ '<input type="checkbox" id="'+HTMLName+'boxCA" value="checkall" title="'+caHinttext+'"';
if (allchecked = 'true') then
htmlres := htmlres + ' checked ';
htmlres := htmlres +
' onClick="'+HTMLName+'CheckAll();" > <span id="'+HTMLName+'labeltext">'+caLabeltext+' </span><br>'
+ '</div>';
end;
for i := 0 to Flist.Count-1 do
begin
htmlres := htmlres + '<input type="checkbox" id="'+HTMLName+'box'+IntToStr(i)+'" value="'
+ FList.Strings[i] + '"'
+ IIF(Selected[i],'CHECKED','')+ ' onMouseDown="'+HTMLName+'resetdoc();" onClick="'+HTMLName+'UpdateList();"> '+ FList.Strings[i] + '<br>';
end;
htmlres := htmlres
+ '</div>'#13
+ ' </td>'#13
+ ' </tr></table>';
if SupportsInput and Required then
begin
{$IFDEF TMSIW6}
TIWComponent40Context(AContext).AddValidation('GSubmitter.' + HTMLName + '.value.length==0'
, FriendlyName + ' is a required field.');
{$ELSE}
TIWAppForm(Owner).AddValidation('GSubmitter.' + HTMLName + '.value.length==0'
, FriendlyName + ' is a required field.');
{$ENDIF}
end;
{$IFDEF TMSIW6}
TIWComponent40Context(AContext).AddToInitProc(HTMLName+'UpdateList();');
{$ELSE}
TIWAppForm(Form).AddToInitProc(HTMLName+'UpdateList();');
{$ENDIF}
Result := TIWHTMLTag.CreateTag('DIV');
Result.Contents.AddText(htmlres);
end;
procedure TTIWCheckList.SetAlignment(const Value: TAlignment);
begin
FAlignment := Value;
Invalidate;
end;
procedure TTIWCheckList.SetBorderColor(const Value: TColor);
begin
FBorderColor := Value;
Invalidate;
end;
procedure TTIWCheckList.SetBorderWidth(const Value: Integer);
begin
FBorderWidth := Value;
Invalidate;
end;
procedure TTIWCheckList.SetColor(const Value: TColor);
begin
FColor := Value;
Invalidate;
end;
procedure TTIWCheckList.SetFlat(const Value: Boolean);
begin
FFlat := Value;
Invalidate;
end;
procedure TTIWCheckList.SetList(const Value: TStringList);
begin
FList.Assign(Value);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -