Net-Base Žurnalas

23.06.2026

Alte VCL-Anwendungen schrittweise modernisieren: Praxisleitfaden für Betrieb, Architektur und Risiko

Viele VCL-Desktop-Anwendungen laufen stabil, aber bremsen bei Windows-Updates, Datenbankwechseln, Security und neuen Schnittstellen. Dieser Leitfaden zeigt, wie Unternehmen VCL-Systeme kontrolliert modernisieren: mit klarer Zielarchitektur, messbaren Etappen, sauberem...

23.06.2026

Nuo žurnalo temos iki projekto įgyvendinimo

Tinkami puslapiai apie paslaugas ir techninę informaciją šiam įrašui

Daugelio įmonių svarbiausia verslo programinė įranga nėra naujausia, o ta, kuri kasdien patikimai veikia: susiformavusios Delphi/VCL darbalaukio programos. Jos valdo procesus, įgyvendina specialią logiką, bendrauja su duomenų bazėmis, failų sistemomis, spausdintuvais, skeneriais arba ERP ir DMS sąsajomis. Būtent dėl to pakeitimas yra rizikingas – ir būtent todėl verta mokėti senas VCL programas nuosekliai modernizuoti, o ne viską statyti iš naujo vienu dideliu Big-Bang.

Nuosekli modernizacija reiškia: išlaikyti funkcinį stabilumą, tiksliai mažinti techninę skolos dalį, įgyvendinti saugumo ir eksploatacijos reikalavimus ir tuo pačiu išlikti bet kada diegiamam ir tvarkomam. IT vadovybei, administracijai ir techniniams projekto atsakingiesiems svarbiau ne „gražiausia“ technologija, o planas, kuris realistiškai apima duomenis, sąsajas, diegimą, teises ir priežiūrą.

Ši apžvalga veda per praktikoje patikrintą modernizacijos kelią: nuo esamos būklės inventorizacijos ir tikslinės architektūros per duomenų prieigą (pvz. BDE-Ablösung), 32-/64-Bit ir Unicode iki REST-API, portalų prijungimų ir eksploatacijos koncepcijų. Dėmesys skiriamas sprendimams, kurie duoda realią įtaką kasdieniame darbe: atnaujinamumui, atsparumui sutrikimams, saugumui, observability (Logs/Metriken) ir kontroliuojamai migracijai.

Kodėl modernizuoti VCL sistemas, jei jos „jau veikia“?

Tai, kad VCL programa veikia, nereiškia, jog ją lengva eksploatuoti. Modernizacijos priežastys dažnai ne GUI dizaine, o eksploatacijoje: operacinės sistemos keitimas, naujos saugumo politikos, duomenų bazės atnaujinimai, tinklo segmentavimas arba nauji reikalavimai autentifikacijai ir protokolavimui. Daugelis rizikų pasimato tik tuomet, kai ruošiamas atnaujinimas – ir dažnai vykstant po skubos.

Tipiniai veiksniai įmonėse:

  • Platformos spaudimas: 32 bitų apribojimai, Windows kietinimas, naujos Windows versijos, virtualizacija arba Windows 11 ARM64 tam tikrose srityse.
  • Duomenų prieiga ir tvarkyklės: pasenę DB sluoksniai (pvz. BDE), nepalaikomos ODBC grandinės, netvarkingos transakcijos, trūksta poolingo strategijų.
  • Sąsajų galimybės: poreikis REST-API, įvykių integracija, prijungimas prie portalų arba trečiųjų šalių sistemų.
  • Sauga ir atitiktis: TLS standartai, audito įrašai, vaidmenų modeliai, Secrets-Handling, paslaugų kietinimas.
  • Eksploatacijos sąnaudos: rankiniai diegimai, trapūs atnaujinimo mechanizmai, trūksta telemetrijos, sunkiai atkartojamos klaidos.

Taigi modernizacija nėra kosmetinis projektas, o sprendimas dėl rizikos ir eksploatacijos kaštų. Menas yra apsaugoti funkcinę pagrindinę logiką tuo pačiu metu etapais atnaujinant techninę apvalkalą.

Modernizavimas vietoje naujos plėtros: sprendimų rėmas IT ir verslui

„Statyti iš naujo“ dažnai skamba paprasčiau, bet praktikoje tai dažnai tampa kelių metų programa su dideliu apimties rizikos laipsniu. Nuosekli modernizacija labiau tinka, kai programa funkciškai tvari, bet turi techninių siaurų vietų. Esminis dalykas – aiškus sprendimų rėmas, argumentuojamas ne ideologiškai, o eksploatacine prasme.

Pasiteisina klasifikacija pagal keturias ašis:

  • Verslo logikos stabilumas: Ar procesai ir taisyklės iš esmės stabilūs, ar nuolat kinta?
  • Techninė būsena: Ar yra blokatorių (BDE, 32-Bit-only, ne Unicode, pasenusi kriptografija, nepakoreguojami komponentai)?
  • Integracijos spaudimas: Ar reikia trumpuoju laikotarpiu išplėsti API, portalus, ataskaitų sistemas, DMS/ERP prijungimus?
  • Eksploatacijos rizika: Kiek kritinis yra prieinamumas, koks yra neveikimo rizikos lygis atnaujinimų metu?

Jei funkcijų stabilumas yra aukštas ir didžiausios rizikos yra techninės, modernizacija dažniausiai yra pragmatiškiausias kelias. Svarbu: modernizacija nėra „taip tęsti“, o kontroliuojamas programos vykdymas su tikslinės architektūros apibrėžimu, matavimo taškais ir priėmimo kriterijais.

Inventorizacija: Ką iš tikrųjų reikia įvertinti

Pirmasis etapas lemia tempą ir kokybę. Vietoj vien tik „pažiūrėti šaltinio kodą“ reikia atlikti operacinę inventorizaciją. Tikslas – patikima žemėlapis: kokių komponentų esama, kurios priklausomybės yra kritinės ir kokie pakeitimai turi šalutinių poveikių?

Techninė inventorizacija per 10 punktų

  • Delphi versija ir įrankių grandinė: kompiliatoriaus būsena, sudarymo procesas, priklausomybės, trečiųjų šalių komponentai.
  • UI ir modulių struktūra: monolitinės formos, dinaminiai paketai, papildinių mechanizmai.
  • Duomenų prieiga: BDE/ADO/ODBC/BDE-pakeitimas su natyviu prijungimu, transakcijų ribos, duomenų bazės specifinės SQL savybės.
  • Duomenų bazės: versijos, priežiūros langai, Backup/Restore, replikacija, saugomos procedūros.
  • Integracijos: failų importai, SMTP, SOAP/REST, TCP/IP, spausdinimas/etiketės, skaitytuvai, Office automatizacija.
  • Diegimas: MSI, XCOPY, atnaujintojas, leidimai, keliai, grupių politikos.
  • Saugumas: autentifikacija, rolės, šifravimas, TLS versijos, slaptos reikšmės, sertifikatai.
  • Eksploatavimas: žurnalai, diagnostika, Crash-Dump’ai, monitoringas, palaikymo procesai.
  • Duomenų kokybė: dublikatai, paliktys, koduotė, laiko žymos, daugiaklientinis palaikymas.
  • Testavimo galimybė: reprodukuojami testų atvejai, testų duomenys, priėmimo procesai, regresija.

Lygiagrečiai verta atlikti trumpą interviu seriją su eksploatacija ir pagrindiniais vartotojais: kur kas dega kasdienėje veikloje? Kurie procesai yra kritiški? Kokie klaidų atvaizdai gaišina laiką? Iš to galima nusistatyti modernizacijos prioritetų seką, kuri yra ne tik techniškai, bet ir operatyviai pagrįsta.

Tikslinė architektūra: Layer-3 kaip gairė palaipsniui atnaujinant

Palaipsninė modernizacija reikalauja tikslinės struktūros, kitaip bus taisomi tik pavieniai klausimai. Daugelyje Delphi-/VCL diegimų trūksta aiškios GUI, verslo logikos ir duomenų prieigos atskirties. Layer-3 architektūra (prezentacija, domenas/verslo logika, infrastruktūra/duomenų prieiga) yra aiški ir perduodama gairė, leidžianti nebūtinai iš karto visiškai pertvarkyti esamą sistemą.

Svarbu IT ir eksploatacijos perspektyva: jeigu verslo logika yra tvarkingai kapsuliuota, vėliau galima aptarnauti kelis frontendus (Desktop, Portal, Service), papildyti sąsajas ir konsoliduoti duomenų prieigas. Tuo pačiu sumažėja rizika, kad UI pakeitimai netyčia pakeis duomenų taisykles.

Ką sluoksniavimas pagerina eksploatacijoje

  • Išleidimo gebėjimas: smulkūs pakeitimai lokalizuojami, regresijų sumažėja.
  • Saugumas: centrinės vietos teisių valdymui, įvesties validacijai ir audito įrašams.
  • Sąsajos: REST-API oder Windows-/Linux-Services gali pakartotinai naudoti verslo logiką.
  • Migracija: duomenų bazės keitimas ir tvarkyklių pakeitimas daugiausia liečia infrastruktūros sluoksnį.

Tikslinė architektūra nebūtinai turi būti „perfektiška“. Ji privalo būti pakankamai konkreti, kad nukreiptų sprendimus: kur turi būti nauja logika? Kaip bus kapsuliuojama duomenų prieiga? Kokios API yra stabilios?

Senų VCL programų palaipsniui modernizavimas: etapinis planas, kuris veikia kasdieniame darbe

Tvarus modernizacijos kelias veikia etapais, kurių kiekvienas suteikia išmatuojamą naudą ir tuo pačiu ruošia kitą lygmenį. Tai sumažina projekto ir eksploatacijos riziką, nes po kiekvieno etapo galima diegti stabilų sprendimą.

Etapas 1: kūrimo proceso, priklausomybių ir išleidimo proceso stabilizavimas

Daugelis paveldėtų problemų nėra kodo problemos, o procesų problemos: build’ai priklauso nuo atskirų darbo vietų, diegimo paketai atliekami rankiniu būdu, priklausomybės nėra versijuotos. Pirmasis svertas yra reproducijamas kūrimo procesas ir nuoseklus paketavimas.

  • Kūrimo proceso automatizavimas ir apibrėžtos kompiliatorių / bibliotekų versijos
  • Trečiųjų šalių komponentų ir konfigūracijų versijavimas
  • Standartizuoti diegimo žingsniai (įskaitant rollback idėją)

Rezultatas: atnaujinimai tampa geriau planuojami, palaikymas gali vienareikšmiškai identifikuoti būsenas, o techninės skolos tampa matomos, o ne paslėptos.

Etapas 2: duomenų prieigos modernizavimas (įprasta: BDE-pakeitimas)

BDE (Borland Database Engine) daugelyje aplinkų yra pagrindinis blokuotojas: senos tvarkyklių grandinės, trapus nustatymas, ribota modernaus duomenų bazių ir saugumo standartų palaikymas. Pakeitimas nukreiptas ne tik į „kitą tvarkyklę“, bet į aiškų duomenų prieigos sluoksnį.

Delphi-projektuose BDE-Ablosung mit nativer Anbindung yra paplitusi kaip duomenų prieigos sluoksnis, nes jis tvarkingai palaiko DB-backendus (pvz. PostgreSQL, SQL Server, MariaDB), leidžia kontroliuoti parametrų rišimą ir transakcijas bei supaprastina tvarkyklių valdymą. IT požiūriu svarbu: mažiau specialių instaliacijų klientuose, aiškesnė konfigūracija ir geresnės diagnostikos galimybės prijungimo problemų atveju.

Svarbūs migracijos aspektai šiame etape:

  • Transakcijų ribos aiškiai apibrėžti (kur prasideda/baigiasi viena verslo operacija?).
  • SQL variacijos identifikuoti (DB specifiškos funkcijos, datų logika, užrakinimai).
  • Ryšio valdymas standartizuoti (timeout’ai, poolingo strategija, pakartotiniai bandymai tik tikslingai).
  • Konfigūracijos higiena: prisijungimo eilutės, sertifikatai ir slaptieji raktai neturi būti įterpti tiesiogiai į kodą.

Etapas 3: Unicode ir 64 bitų palaikymo planuotas įdiegimas

Unicode migracija ir perėjimas prie 64 bitų yra mažiau „vieno varnelės kompileryje“, o labiau kokybės klausimas. Unicode liečia simbolių eilutes, failų vardus, sąsajas ir duomenų bazes (collation/encoding). 64 bitų perėjimas liečia rodyklių dydžius, išorines DLL, spausdintuvų ir skenerių tvarkykles bei COM priklausomybes.

Projektų vadovams pasiteisina: šias temas nepalikti paskutinėms dienoms, o spręsti kaip atskirą etapą su aiškiais testiniais atvejais. Tipinės kliūtys yra eksporto formatai (CSV / Fixed Width), PDF ir ataskaitų darbo eiga bei sąveika su senomis sistemomis, kurios vis dar tikisi 8 bitų kodavimo.

Etapas 4: Sąsajų papildymas – nepaveikiant darbalaukio stabilumo

Daugelis įmonių nori iš VCL programos pateikti duomenis portalams, BI ar trečiosioms sistemoms. Saugesnis kelias dažnai yra API-fasadas: aiškiai versijuota REST-API (HTTP pagrindu veikianti sąsaja), kuri kontroliuoja ir eksponuoja verslo logiką. Taip nėra „klientas nuotoliniu būdu valdomas“, o verslo operacijos teikiamos kaip paslaugos.

Tai atskiria pakeitimus: darbalaukis lieka stabilus esamiems naudotojams, tuo tarpu naujos integracijos plečiasi per API. Svarbu eksploatavimui ir saugumui:

  • Autentifikacija/Autorizavimas: pvz., tokenų pagrindu, opcionaliai integruojama į SSO (įmonių aplinkose dažnai SAML 2.0).
  • Užklausų dažnio ribojimas (Rate Limits) ir laiko limitai (Timeouts): apsauga nuo netyčinės apkrovos dėl partijinių integracijų.
  • Versijavimas: API versijos išvengia nesuderinamų pakeitimų prijungtose sistemose.
  • Auditas: kas kada ir ką pakeitė (verslo lygmenyje), ne tik „užklausa gauta“.

Etappe 5: Portal- oder Service-Komponenten ergänzen (C# oder Delphi – architektonisch sauber)

Daugelyje modernizacijos projektų šalia darbalaukio atsiranda klientų portalas arba vidinė žiniatinklio sritis. Ar ši dalis įgyvendinama per C# ar Delphi yra mažiau lemiama nei bendroji architektūra: nuoseklus duomenų modelis, aiškios atsakomybės ir stabilios sąsajos. IT atžvilgiu svarbu, kad eksploatavimas, žurnalinimas, prieigos teisės ir diegimas tilptų į esamą kraštovaizdį (pvz., Microsoft IIS web dalims arba Linux-servisams foniniam apdorojimui).

Praktiškai tinka suskirstymas pagal užduotis:

  • Desktop (VCL): procesų artima vartotojo sąsaja, offline/LAN artimos funkcijos, įrenginių sąsajos.
  • Services: foniniai uždaviniai, validacijos, importai/eksportai, eilių apdorojimas, suplanuoti vykdymai.
  • Portal: savitarna, būsenos užklausos, dokumentai, darbo eigos per naršyklę.

Tokiu būdu susidaro sistema, kuri gali augti nekelian rizikos esamam branduoliui.

Duomenų bazės modernizavimas: nuo „veikia“ iki „prižiūrima“

Daugelis VCL programų glaudžiai susijusios su duomenų bazės istorija: Paradox palikimai, Firebird, senesnės SQL Server versijos arba mišrios formos. Duomenų bazės migracija yra sėkminga, kai ją suvokiama kaip duomenų ir eksploatacijos projektą, o ne vien kaip schemos kopijavimą.

Ką IT turėtų išsiaiškinti prieš migraciją

  • Backup/Restore und RPO/RTO: kaip greitai reikia vėl būti prieinamiems ir kiek duomenų netekčių yra toleruotina?
  • Priežiūros langas ir neaktyvumo strategija: Big-Bang, paralelinis veikimas ar inkrementinis perėjimas.
  • Simbolių rinkiniai ir collation’ai: svarbu dirbant su Unicode ir rūšiavimo/paieškos logika.
  • Transakcijų izoliacija ir užrakinimas: aktualu esant dideliam lygiagretumui ir partijiniams darbams.
  • Reporting: tiesioginiai DB prisijungimai iš trečiųjų įrankių (BI, Excel, ETL) turi būti įtraukti į migracijos planą.

Daugeliui įmonių PostgreSQL yra pasirinkimas, nes ji kaip platforma yra lengvai eksploatuojama ir teikia aiškius įrankius atsarginėms kopijoms, monitoringui ir prieigos teisių valdymui. Tačiau svarbiausia lieka: taikomoji programa turi švariai abstraktuoti SQL ir tipų skirtumus, kitaip kiekvienas užklausos atvejis tampa išimtimi. Būtent čia atsiperka konsoliduotas duomenų prieigos sluoksnis (pvz. FireDAC).

Saugumas ir prieigos teisės: modernizacija be naujos atakos paviršiaus

Legacy darbalaukio programos dažnai buvo projektuojamos laikais, kai „tinkle (LAN)“ automatiškai buvo laikoma „patikima“. Šiandien tai retai priimtina: tinklo segmentavimas, Zero-Trust požiūriai, nuotolinis darbas ir audito reikalavimai didina spaudimą. Todėl modernizacija turi įtraukti saugumo sprendimus, bet neturėtų paralyžiuoti eksploatacijos.

Konkretūs veiksmai, kuriuos galima diegti palaipsniui:

  • Centrinis autentifikavimo mechanizmas: aiškus tapatybės (prisijungimo) ir vaidmenų (prieigos teisių) atskyrimas.
  • Ryšio šifravimas: nuolat atnaujinti TLS, numatyti sertifikatų valdymą.
  • Slaptinių tvarkymas: jokie slaptažodžiai INI failuose; vietoje to naudoti saugomus saugyklus arba centralizuotai valdomus secrets.
  • Audito įrašai: fiksuoti fachines pakeitimo operacijas (kas/ką/kada), ne tik techninius žurnalus.
  • Įvesties validacija: ypač naujų API atveju — griežta ir centralizuota.

Svarbu sprendimų priėmėjams: saugumas nėra „priedas“, kurį užklijuoji pabaigoje. Kai kuriami API, servisai ar portalai, saugumo architektūra turi būti nuo pradžių įtraukta į tikslo architektūrą.

Eksploatacija ir administravimas: ką modernizacija pastebimai pagerina

Palaipsninės modernizacijos didžiausia nauda dažnai pasirodo srityse, kurios anksčiau reikalavimų specifikacijoje beveik nebuvo: stebėsena, klaidų paieška, diegimo valdymas, avarinis veikimas. Ypač VCL taikomųjų programų atveju, kurios ilgus metus organiškai augo, nedidelis rinkinys eksploatacijos patobulinimų gali ženkliai sumažinti palaikymo apkrovą — be to, kad galutiniai naudotojai iš karto matytų naują UI.

Kontrolinis sąrašas „eksploatacijai tinkamų“ komponentų

  • Konfigūracijos standartas: centralizuotai dokumentuotas, aplinkai pritaikytas (Dev/Test/Prod), aiškūs numatytieji nustatymai.
  • Struktūruoti žurnalai: įrašai su koreliacija (pvz. operacijos ID), aiškūs log lygiai, jokie jautrūs duomenys neatskleidžiami plokščiu tekstu.
  • Monitoringas: health check’ai servisams, ryšio su duomenų baze būsena, užduočių vykdymo trukmės, eilių ilgiai.
  • Diegimo/Atnaujinimo įrankis: galimas tylus diegimas, rollback strategija, aiškios prieigos teisės.
  • Klaidų diagnostika: reproducibilios avarijų informacijos, aiškūs palaikymo duomenys (versija, modulio būsena, konfigūracija).

Administratorių požiūriu ypač svarbu: kai foninė logika perkeliama iš darbalaukio į Windows arba Linux servisus, galima geriau valdyti vykdymo trukmes, paleidimo/atnaujinimo elgseną ir resursų suvartojimą. Tuo pačiu sumažėja rizika, kad „atidarytas klientas“ užblokuos batch procesą.

Testavimo ir migracijos strategija: paralelinis veikimas vietoje sustojimo

Palaipsninė modernizacija remiasi regresijos testais. Tai ne tik vienetinių testų rinkinys (kurie legacy aplinkoje dažnai trūksta), bet pirmiausia funkciniai end-to-end scenarijai: tipiniai procesai, kritinės išimtys, masiniai duomenys, spausdinimo procesai, importai/eksportai. Įmonėms svarbu, kad šie testai taptų planuojamai kartojami.

Pragmatiški metodai, kai nėra testų bazės

  • Golden Master: apibrėžtoms įvestims fiksuojamos išvestys/ataskaitos/duomenų būsenos ir lyginamos su naujomis būsenomis.
  • Testdatenkoffer: anonimizuotos duomenų bazės arba sintetiniai duomenys su reprezentatyviais ypatingais atvejais.
  • Schrittweise Schnittstellen-Tests: API sutartys ir importo formatai kaip patikrinama specifikacija.

Migracijose (duomenų bazė, Unicode, 64 bitų) verta taikyti paralelinį veikimą, kur tai įmanoma: naujos komponentės iš pradžių veikia šalia esamo sprendimo, teikia rezultatus ar ataskaitas, nepanaikinant esamos sistemos iš karto. Taip gaunami patikimi palyginimai, o perėjimas tampa kontroliuojamu sprendimu, o ne šuoliu į nežinomybę.

Tipinės pinklės – ir kaip jų išvengti

Daugelis modernizacijų žlunga ne dėl technikos, o dėl netinkamos eiliškumo ar trūkstamų gairių. Trys modeliai pasikartoja ypač dažnai:

  • UI zuerst: naujas frontend be aiškiai apibrėžtų verslo logikos ir duomenų prieigos sluoksnių tik perkelia problemas ir padaro vėlesnius žingsnius brangesnius.
  • „Nur Treiber tauschen“: bei BDE-pakeitimas arba DB keitimo be transakcijų ir SQL peržiūros atsiranda sunkiai aptinkamos domeno klaidos.
  • Integration ohne Security: greitai įdiegtas API be vaidmenų modelio, audito ir užklausų dažnio apribojimų tampa nuolatine atakų sritimi.

Priemonė yra etapinis planas su aiškiais kokybės kriterijais: kiekviena stadija turi būti diegiama, turėti monitoringą ir išlaikyti apibrėžtus funkcinis testus. Tada modernizavimas tampa serijiniu gerinimo procesu, o ne nuolatiniu projektu.

Išvados: Modernizavimas yra programa – ne vienkartinis įvykis

Senos VCL programos dažnai yra išaugusių procesų stuburas. Jas keičiant keičiama ne tik kodo bazė, bet ir eksploatacinės žinios. Tuo tarpu palaipsniui modernizuojant galima sujungti stabilumą ir tolesnį vystymą: konsoliduoti duomenų prieigą (įskaitant BDE-pakeitimą), suplanuoti Unicode/64 bitų palaikymą, tvarkingai papildyti API ir paslaugas bei žymiai palengvinti eksploatavimą su žurnavimu, monitoringu ir reprodukuojamais leidimais.

Esminis aspektas yra architektūra kaip gairė: verslo logika ir duomenų prieiga atskiriami taip, kad nauji reikalavimai (portalas, sąsajos, reportingas, nauja duomenų bazė) galėtų būti įgyvendinti kontroliuojamai. Taip susiformuoja skaitmeninis įmonės sprendimas, kuris ne tik veikia, bet ir lieka patikimai eksploatuojamas esant atnaujinimams, saugumo reikalavimams ir integracijos spaudimui.

Jei norite sukurti patikimą modernizacijos kelią savo VCL-/Delphi-esamai programai, leiskite mums struktūrizuoti pradinę situaciją, rizikas ir etapus techniniame pirminiame pokalbyje:

Fachiniame kontekste taip pat svarbi Delphi modernizacija ir Vcl Legacy programa, kai integracijos, duomenų srautai ir tolesnis vystymas turi veikti sklandžiai kartu.

Aptarti projektą arba modernizacijos užmojį su Net-Base.

Kitas žingsnis

Kai tema virsta realiu projektu, architektūra, esami sprendimai ir eksploatavimas turėtų būti nagrinėjami kartu nuo pat pradžių.

Mes padedame ne tik pavienėse užklausose, bet ir tuomet, kai iš šaltinio kodo fragmentų, paveldėtų temų ar portalo idėjų turi tapti patikimas įmonės projektas.

  • Esama padėtis, tikslinis vaizdas ir techninės rizikos vertinami kartu.
  • REST, duomenų prieiga, portalai ir rollout nebus perkelti į vėlesnį etapą kaip vėlyvos pasekmės.
  • Jūs anksti matote, kuris kelias yra ekonomiškai ir operaciniškai tvarus.

Pasidalinti įrašu

Tiesiogiai pasidalinti šiuo įrašu

LinkedIn, X, XING, Facebook, WhatsApp ir el. paštas yra iš karto prieinami. Instagramui paruošiame nuorodą ir trumpą tekstą iš karto.

El. paštas

Instagram atidaromas naujame skirtuke. Nuoroda ir trumpas tekstas iš anksto nukopijuojami į iškarpinę.