Obsługa hiperłączy na
TXLSXWorksheet. Każdy wpis kotwicy jedną komórkę do zewnętrznego URL. SaveAs emituje blok
<hyperlinks> w arkuszu oraz odpowiedni plik
xl/worksheets/_rels/sheetN.xml.rels ; Open rozwiązuje z powrotem cele relacji do kolekcji. Zadeklarowana w
lxHandleXDeklaracja TXLSXHyperlink
type
TXLSXHyperlink = class
constructor Create(ARow, ACol: Integer; const AUrl, ADisplay, ATooltip: WideString);
function IsInternal: Boolean; // True when Location is set and Url is empty
property Row: Integer;
property Col: Integer;
property Url: WideString; // External URL (mutually exclusive with Location)
property Location: WideString; // Internal anchor, e.g. "Sheet2!A1"
property Display: WideString;
property Tooltip: WideString;
end;
Elementy TXLSXHyperlink
| Row, Col | 1-oparty komórka anchor coordinates |
| Url | External URL. Written do sheetN.xml.rels
z TargetMode="External" |
| Display | Optional display tekst shown przez Excel w place dla
URL. Maps do display attribute on
<hyperlink> |
| Tooltip | Optional tooltip shown gdy user hovers
komórka. Maps do tooltip attribute on
<hyperlink> |
Deklaracja TXLSXHyperlinks
type
TXLSXHyperlinks = class
constructor Create;
destructor Destroy; override;
function Add(ARow, ACol: Integer; const AUrl: WideString): Integer; overload;
function Add(ARow, ACol: Integer; const AUrl, ADisplay: WideString): Integer; overload;
function Add(ARow, ACol: Integer; const AUrl, ADisplay, ATooltip: WideString): Integer; overload;
// Internal hyperlink — Location overload. No rels relationship.
function AddInternal(ARow, ACol: Integer; const ALocation, ADisplay, ATooltip: WideString): Integer;
function IndexOfCell(ARow, ACol: Integer): Integer;
function FindAt(ARow, ACol: Integer): TXLSXHyperlink;
function DeleteAt(ARow, ACol: Integer): Boolean;
function DeleteInRange(ARow1, ACol1, ARow2, ACol2: Integer): Integer;
procedure Delete(Index: Integer);
procedure Clear;
property Count: Integer;
property Items[Index: Integer]: TXLSXHyperlink; default;
end;
Elementy TXLSXHyperlinks
| Add(Row, Col, Url) | Dodaje hiperłącze tylko z adresem URL. Zwraca nowy indeks wpisu |
| Add(Row, Col, Url, Display) | Dodaje hiperłącze z jawnie podanym tekstem wyświetlanym |
| Add(Row, Col, Url, Display, Tooltip) | Dodaje hiperłącze z tekstem wyświetlanym i podpowiedzią |
| AddInternal(Row, Col, Location, Display, Tooltip) | Dodaje wewnętrzne hiperłącze zakotwiczone; przechodzi do lokalizacji Sheet!Cell (np. "Sheet2!A1") w innym miejscu skoroszytu. Nie jest generowana relacja worksheet rels; element
Sheet!Cell location (e.g
"Sheet2!A1") w innym miejscu skoroszytu. Nie jest generowana żadna
relacja w rels arkusza; a <hyperlink>
element carries an inline location attribute. Use
Worksheet.AddHyperlinkToCell(...) zawiera wbudowany atrybut location. Użyj Worksheet.AddHyperlinkToCell(...) jako typowego skrótu |
| IndexOfCell(Row, Col) | Zwraca indeks 0-based hiperłącza zakotwiczonego w komórce o współrzędnych liczonych od 1, albo -1, gdy komórka nie ma hiperłącza -1 gdy komórka nie ma
hiperłącza |
| FindAt(Row, Col) | Zwraca obiekt hiperłącza zakotwiczonego w komórce, albo nil, gdy hiperłącze nie jest obecne nil when no hyperlink is present |
| DeleteAt(Row, Col) | Usuwa hiperłącze zakotwiczone w komórce i
zwraca True; returns False Usuwa hiperłącze zakotwiczone w komórce i zwraca True; zwraca False, gdy nie istnieje pasujące hiperłącze |
| DeleteInRange(Row1, Col1, Row2, Col2) | Usuwa każde hiperłącze, którego zakotwiczenie znajduje się w domkniętym zakresie komórek liczonym od 1, i zwraca liczbę usuniętych. Odwrócone współrzędne są akceptowane |
| Delete(Index) | Usuwa hiperłącze o podanym indeksie kolekcji liczonym od 0 |
| Count | Liczba hiperłączy w arkuszu |
| Items[Index] | Hiperłącze o podanym indeksie liczonym od 0. Zadeklarowane jako właściwość domyślna |
| Clear | Usuwa i zwalnia każde hiperłącze |
Przykład
var
ws: TXLSXWorksheet;
begin
ws := Workbook.Sheets.Add('Links');
ws.Cells.Item[1, 1].Value := 'losLab';
ws.AddHyperlink(1, 1, 'https://www.loslab.com',
'losLab home', 'Open in browser');
// Equivalent through the collection:
ws.Hyperlinks.Add(2, 1, 'https://www.loslab.com/docs');
if ws.Hyperlinks.FindAt(1, 1) <> nil then
ws.Hyperlinks.DeleteInRange(1, 1, 2, 1);
end;
Zobacz też