Skocz do zawartości

Znajdź zawartość

Wyświetlanie wyników dla tagów 'wydruk' .

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj przy użyciu nazwy użytkownika

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Od tej daty

    Do tej daty


Ostatnia aktualizacja

  • Od tej daty

    Do tej daty


Filtruj po ilości...

Dołączył

  • Od tej daty

    Do tej daty


Grupa podstawowa


O mnie


Tytuł własny

Znaleziono 5 wyników

  1. W przypadku etykiet adresowych, cały adres tworzony jest przez kontrolki zawierające pojedyncze dane. Jeśli któreś z pól adresu jest puste, wtedy na wydruku powstaje dodatkowy odstęp. Można temu zaradzić dokonując kilku zmian, oraz formatując cały adres za pomocą skryptu. Zalety i właściwości: 1. W przypadku obecności nazwy firmy jak i imienia z nazwiskiem całość będzie sformatowana następująco: Firma - Imię nazwisko. Jeśli tylko jedna z tym danych będzie dostępna to zostanie wyświetlona tylko ona, bez spacji i myślników jak było w rozwiązaniu wcześniejszym. 2. Brak luk pomiędzy wierszami. Jeśli wierszy jest więcej (np adres linia 2) lub wiersz nie mieści się w jednej linii to zostanie dołożony wiersz. 3. Miasto wypisywane jest tuż za kodem pocztowym, WIELKIMI literami. 4. Jeśli państwem docelowym nie jest polska, to nazwa państwa zostanie wstawiona na samym końcu, pod kodem pocztowym. (skrypt porównuje nazwę państwa ze słowem "polska", nie patrząc na wielkość liter) Po pierwsze, zamiast kilku kontrolek z tekstem należy wstawić/pozostawić jedną z nich. Na rysunku poniżej widać starą i nową wersję. Kontrolkę należy rozciągnąć możliwie najszerzej, aby zajmowała całą dostępną przestrzeń w której będzie mógł się pojawić adres. Następnie należy upewnić się, że pole nie jest powiązane ze źródłem danych - nie jest to potrzebne (pole Tekst ma być puste, przy polu nie może być ikonki walca symbolizującej bazę danych). Dodatkowo należy zaznaczyć dwie opcje, wiele linii i zawijanie wierszy Następnie, należy dodać dla tej kontrolki (najpierw ją zaznaczyć w edytorze) skrypt formatujący adres, odszukując na liście właściwości odpowiednie pole i naciskając ikonkę edycji. Należy tam wkleić poniższy kod, zastępując wszystko co tam jest. private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { System.Text.StringBuilder adres = new System.Text.StringBuilder(100); if( !String.IsNullOrEmpty(xtraReport1.GetCurrentColumnValue("Odbiorca_Firma").ToString()) ) { adres.Append( xtraReport1.GetCurrentColumnValue("Odbiorca_Firma") ); if( !String.IsNullOrEmpty(xtraReport1.GetCurrentColumnValue("Odbiorca_ImieNazwisko").ToString()) ) adres.AppendFormat(" - {0}", xtraReport1.GetCurrentColumnValue("Odbiorca_ImieNazwisko") ); } else adres.Append(xtraReport1.GetCurrentColumnValue("Odbiorca_ImieNazwisko") ); adres.AppendLine(); if( !String.IsNullOrEmpty(xtraReport1.GetCurrentColumnValue("Odbiorca_AdresLinia1").ToString()) ) adres.AppendLine( xtraReport1.GetCurrentColumnValue("Odbiorca_AdresLinia1").ToString()); if( !String.IsNullOrEmpty(xtraReport1.GetCurrentColumnValue("Odbiorca_AdresLinia2").ToString()) ) adres.AppendLine( xtraReport1.GetCurrentColumnValue("Odbiorca_AdresLinia2").ToString()); adres.AppendFormat("{0} {1}", xtraReport1.GetCurrentColumnValue("Odbiorca_KodPocztowy").ToString(), xtraReport1.GetCurrentColumnValue("Odbiorca_Miasto").ToString().ToUpper() ); System.String panstwo = xtraReport1.GetCurrentColumnValue("Odbiorca_Panstwo").ToString(); if( !String.IsNullOrEmpty(panstwo) && panstwo.ToLower() != "polska" ) { adres.AppendLine(); adres.Append(panstwo); } ((XRLabel)sender).Text = adres.ToString(); } Na koniec, można jeszcze ustalić w którym miejscu powinien się ten adres pojawiać, wybierając odpowiednie położenie tekstu we właściwościach kontrolki z adresem. Najlepsze zdaje się być przyleganie do lewej i centrowanie w pionie, lub centrowanie tekstu w pionie i poziomie - ale to już kwestia gustu No i porównanie, od lewej: wersja poprzednia, nowa wersja wyrównana do lewej i wycentrowana w pionie, nowa wersja wycentrowana w pionie i poziomie Wszelkie sugestie mile widziane. Jeśli rozwiązanie się przyjmie zostanie wprowadzone do wszystkich naszych wydruków.
  2. Wiele osób o to pyta i czeka od dłuższego czasu na wskazówki jak zrobić etykiety o rozmiarze, którego w Sello nie ma... stąd mały tutorial, jak to zrobić we własnym zakresie i bezboleśnie Po pierwsze, skorzystamy z powielania istniejącego szablonu, bo tak będzie prościej. Administracja->Słowniki->Wydruki, wybieramy opcję powiel na istniejącej etykiecie podobnego typu. Zmieniamy nazwę na nową, np Etykieta adresowa (2x4). Następnie klikamy OK. Nie edytujemy jeszcze wzorca, najpierw musi się powielić i zapisać w bazie. Na liście jest teraz powielony wzorzec o nowej nazwie, otwieramy go zatem ponownie i wybieramy opcję Otwórz edytor wydruków. Po chwili pojawi się edytor, poniżej wycinek przedstawiający szablon etykiety. Jeśli spojrzymy na prawą stronę edytora w okienko Eksplorator i rozwiniemy listę, pojawi się takie oto drzewo obiektów. xtraReport1 - nazwa całego raportu (wydruku), tu można ustawić między innymi wielkość kartki (np A4) Detail - sekcja w raporcie, która definiuje co dokładnie powinno być drukowane dla pojedynczego obiektu, w tym przypadku dla pojedynczej paczki. Tu można ustalić ile kolumn ma wydruk (do tego wrócę za chwilę), jaka jest wysokość oraz szerokość pojedynczej etykiety. xrPanelPlaceHolder - jest to specjalny niewidoczny (pusty) element dodany na potrzeby realizacji pomijania określonej liczny etykiet przy drukowaniu xrPanel1 - to jest już panel, który wewnątrz zawiera to co faktycznie stanowi zawartość etykiety. W skrypcie OnBeforePrint (wywoływanym przed drukowaniem) zawiera on kod, który faktycznie wyświetla lub nie puste etykiety które należy pominąć. Wersja silnika raportów użyta w Sello potrafi pomijać elementy, ale i tak zaczynała je drukować od pierwszego miejsca, stąd takie rozwiązanie xrLabel1..6 - to już są elementy wyświetlające dane Etykieta 2x8 jaką mamy zamiar zrobić jest większa niż ta którą przerabiamy. Jej rozmiar to przykładowo 105 x 74.2mm i zamiast 3 kolumn, ma 2. rozpoczynamy zatem od powiększenia obszaru roboczego etykiety, czyli Detail. Najlepiej w tym celu wybrać ten element w oknie Eksploratora, następnie pod spodem w oknie Właściwości odszukać wysokość (Height) i wpisać tam wysokość nowej etykiety w dziesiętnych częściach milimetra. Czyli 74.2 mm to będzie x10 = 742. Po zatwierdzeniu obszar Detail powinien się rozciągnąć w dół wg strzałki. Następnie klikamy w Eksploratorze na kolejny element w drzewie, czyli xrPanelPlaceHolder. Zmieniamy mu wysokość na cały rozmiar sekcji Detail, czyli na 742. Zaznaczony prostokąt powinien się rozciągnąć wg strzałki. Można to oczywiście zrobić ręcznie rozciągając zaznaczony prostokąt przy pomocy myszki ciągnąc za białe kwadraciki - oczywiście jeśli nie jest wymagana precyzja co do dziesiątych części milimetra Podobnie postępujemy z kolejnymi elementami, czyli xrPanel1. Można go śmiało ręcznie przeciągnąć, ponieważ zawiera on tylko ramkę wokół etykiety. Istotna rzecz, zmiana szerokości i liczby kolumn. Wybrać należy element Detail, w jego właściwościach odszukujemy Multi-Column Options i ustawiamy tam kolumny (column count)2, i szerokość (column width) kolumny 105 x10 = 1050. Dodatkowo, jeśli zachodzi taka potrzeba można ustalić odległości między kolumnami (Column spacing), jednak tu wystarczy odpowiednio ustawić ramkę xrPanel1. Podobnie jak poprzednio trzeba dopasować wszystkie kolejne elementy do obszaru roboczego - tym razem w poziomie, czyli po kolei xrPanelPlaceHolder i xrPanel1. Następnie należy dopasować już za pomocą myszki kontrolki zawierające dane, rozciągając ja na szerokość i wysokość, zwiększając/zmniejszając czcionkę (na górze edytora) w sposób identyczny jak w jakimkolwiek programie do edycji tekstu (Word, Power Point). Na koniec na dole edytora można obejrzeć podgląd z danymi przykładowymi (przycisk podgląd). Jeśli etykeity nie mieszczą się na stronie, lub zostaje zbyt dużo miejsca pomiędzy nimi, albo pod nimi, należy skorygować wartości odpowiednich elementów. Warto też zwrócić uwagę, jak zachowują się kontrolki z danymi przy długich nazwach - ale to już trzeba obejrzeć na podglądzie wydruku jakiejś paczki. W przypadku gdy długie np. nazwisko się nie mieści, za pomocą smart tagu (ikonka [>]) należy zaznaczyć opcję zawijania wierszy (word wrap) i odpowiednio zwiększyć wysokość elementu. Nie zaznaczać opcji "może rosnąć" (can grow), gdyż wtedy wielkość całej etykiety będzie dynamicznie zwiększana gdy pojawią się dwie linie
  3. Operacje, jakie można wykonywać na polach tekstowych będziemy umieszczać tutaj "hurtem" w pierwszym poście, żeby nie zaśmiecać forum pojedynczymi tematami. Poniższe skrypty należy dodać dla pola (kontrolki) z przypisaną zmienną tekstową. Są to fragmenty skryptów, więc aby działały poprawnie należy dany fragment wkleić pomiędzy klamry w edytorze skryptu (Nie usuwać skryptu domyślnego) 1. Duże litery Skrypt OnBeforePrint ((XRLabel)sender).Text = ((XRLabel)sender).Text.ToUpper(); Dla przykładu, powyższą linijkę należy wkleić np dla pola zawierającego miasto aby uzyskać: private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { ((XRLabel)sender).Text = ((XRLabel)sender).Text.ToUpper(); } 2. Warunkowe wyświetlanie wartości liczbowych Skrypt OnBeforePrint Dotyczy np pola Paczka_Masa, gdy masa w paczce jest 0, to wartość nie powinna być drukowana: if( Convert.ToDecimal( ((XRTableCell)sender).Text) == 0 ) ((XRTableCell)sender).Text = ""; } Uwaga: powyższy kod dotyczy wartości w komórkach tabeli (XRTableCell). Jeśli zamiast tego zmieniana jest wartość zwykłego pola typu Label, (XRTableCell) należy zamienić na (XRLabel)
  4. Tylko dla 5 cyfrowych kodów pocztowych. private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { String kod = ((XRLabel)sender).Text; String cyfry = ""; for(int i = 0; i < kod.Length; i++ ) if( Char.IsDigit(kod[i]) ) cyfry += kod[i]; if( cyfry.Length == 5 ) ((XRLabel)sender).Text = String.Format("{0} {1} {2} {3} {4}", cyfry[0],cyfry[1],cyfry[2],cyfry[3],cyfry[4]); } To co jest podane wewnątrz funkcji Format, czyli "{0} {1} {2} {3} {4}" to jest formatowanie kolejnych cyfr z kodu. Dostawiasz sobie tam tyle spacji ile trzeba pomiędzy {X}
  5. Osobno czesc calkowita kwoty pobrania i osobno grosze. Trzeba by to zrobić za pomocą skryptów. Dodajemy dwa pola np w kwotę pobrania osobno dla zł, osobno dla gr. Do obu pól należy dołączyć te same dane (Paczka_PobranieKwota w tym pyrzypadku) W polu zł, zastępujemy skrypt OnBeforePrint kodem: private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { ((XRLabel)sender).Text = ((int) Convert.ToDecimal(((XRLabel)sender).Text)).ToString(); } Spowoduje to, że wartość Paczka_PobranieKwota zostanie zrzutowane na typ przecinkowy, (np 13,90) następnie rzutowanie na typ (int) wytnie część po przecinku. Na koniec konwersja ToString() bo wartość jest przypisywana do pola tekstowego. Dla pola gr. analogiczny kod: private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { ((XRLabel)sender).Text = String.Format("{0:00}", (((int) (Convert.ToDecimal( ((XRLabel)sender).Text ) * 100) % 100)) ); } , który wyciągnie z pola Paczka_PobranieKwota część po przecinku.
×
×
  • Dodaj nową pozycję...